diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index d14f5808c3..1f56a46c76 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -1454,21 +1454,6 @@ pair TextMetrics::getPosNearX(Row const & row, int & x) const } -// FIXME: only InsetTabular uses this. Remove? -pos_type TextMetrics::x2pos(pit_type pit, int row, int x) const -{ - // We play safe and use parMetrics(pit) to make sure the - // ParagraphMetrics will be redone and OK to use if needed. - // Otherwise we would use an empty ParagraphMetrics in - // upDownInText() while in selection mode. - ParagraphMetrics const & pm = parMetrics(pit); - - LBUFERR(row < int(pm.rows().size())); - Row const & r = pm.rows()[row]; - return getPosNearX(r, x).first; -} - - // y is screen coordinate pit_type TextMetrics::getPitNearY(int y) { diff --git a/src/TextMetrics.h b/src/TextMetrics.h index 69d0e4853b..4f49f0fa7d 100644 --- a/src/TextMetrics.h +++ b/src/TextMetrics.h @@ -191,12 +191,6 @@ public: /// of this column. This takes in account horizontal cursor row scrolling. std::pair getPosNearX(Row const & row, int & x) const; - /// returns pos in given par at given x coord. - pos_type x2pos(pit_type pit, int row, int x) const; - - // FIXME: is there a need for this? - //int pos2x(pit_type pit, pos_type pos) const; - /// returns the row near the specified y-coordinate in a given paragraph /// (relative to the screen). If assert_in_view is true, it is made sure /// that the row is on screen completely; this might change the given pit. diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index e9050c4fb3..016d90a692 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -5292,15 +5292,15 @@ void InsetTabular::doDispatch(Cursor & cur, FuncRequest & cmd) // setting also the right targetX. cur.selHandle(act == LFUN_DOWN_SELECT); if (tabular.cellRow(cur.idx()) != tabular.nrows() - 1) { - int const xtarget = cur.targetX(); + int xtarget = cur.targetX(); // WARNING: Once cur.idx() has been reset, the cursor is in // an inconsistent state until pos() has been set. Be careful // what you do with it! cur.idx() = tabular.cellBelow(cur.idx()); cur.pit() = 0; - TextMetrics const & tm = - cur.bv().textMetrics(cell(cur.idx())->getText(0)); - cur.pos() = tm.x2pos(cur.pit(), 0, xtarget); + TextMetrics const & tm = cur.bv().textMetrics(cell(cur.idx())->getText(0)); + ParagraphMetrics const & pm = tm.parMetrics(cur.pit()); + cur.pos() = tm.getPosNearX(pm.rows().front(), xtarget).first; cur.setCurrentFont(); } } @@ -5331,7 +5331,7 @@ void InsetTabular::doDispatch(Cursor & cur, FuncRequest & cmd) // setting also the right targetX. cur.selHandle(act == LFUN_UP_SELECT); if (tabular.cellRow(cur.idx()) != 0) { - int const xtarget = cur.targetX(); + int xtarget = cur.targetX(); // WARNING: Once cur.idx() has been reset, the cursor is in // an inconsistent state until pos() has been set. Be careful // what you do with it! @@ -5339,9 +5339,8 @@ void InsetTabular::doDispatch(Cursor & cur, FuncRequest & cmd) cur.pit() = cur.lastpit(); Text const * text = cell(cur.idx())->getText(0); TextMetrics const & tm = cur.bv().textMetrics(text); - ParagraphMetrics const & pm = - tm.parMetrics(cur.lastpit()); - cur.pos() = tm.x2pos(cur.pit(), pm.rows().size()-1, xtarget); + ParagraphMetrics const & pm = tm.parMetrics(cur.lastpit()); + cur.pos() = tm.getPosNearX(pm.rows().back(), xtarget).first; cur.setCurrentFont(); } }