From 93db2bd08e4c1a9b5e78aecbb71055f22fa3683e Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Fri, 9 Nov 2018 15:21:55 +0000 Subject: [PATCH] Make cell-forward/backward cycle in math Make cell-backward put the cursor at the end of cell when using mac-like cursor movement. --- src/mathed/InsetMathGrid.cpp | 19 ------------------- src/mathed/InsetMathNest.cpp | 18 +++++++++++++++--- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/mathed/InsetMathGrid.cpp b/src/mathed/InsetMathGrid.cpp index 5a4830cb39..4ce79bd619 100644 --- a/src/mathed/InsetMathGrid.cpp +++ b/src/mathed/InsetMathGrid.cpp @@ -1432,25 +1432,6 @@ void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd) splitCell(cur); break; - case LFUN_CELL_BACKWARD: - // See below. - cur.selection(false); - if (!idxPrev(cur)) { - cmd = FuncRequest(LFUN_FINISHED_BACKWARD); - cur.undispatched(); - } - break; - - case LFUN_CELL_FORWARD: - // Can't handle selection by additional 'shift' as this is - // hard bound to LFUN_CELL_BACKWARD - cur.selection(false); - if (!idxNext(cur)) { - cmd = FuncRequest(LFUN_FINISHED_FORWARD); - cur.undispatched(); - } - break; - case LFUN_NEWLINE_INSERT: { cur.recordUndoInset(); row_type const r = cur.row(); diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp index 857fd7f87e..8cd1254098 100644 --- a/src/mathed/InsetMathNest.cpp +++ b/src/mathed/InsetMathNest.cpp @@ -216,7 +216,7 @@ bool InsetMathNest::idxPrev(Cursor & cur) const if (cur.idx() == 0) return false; --cur.idx(); - cur.pos() = cur.lastpos(); + cur.pos() = lyxrc.mac_like_cursor_movement ? cur.lastpos() : 0; return true; } @@ -793,12 +793,24 @@ void InsetMathNest::doDispatch(Cursor & cur, FuncRequest & cmd) case LFUN_CELL_FORWARD: cur.screenUpdateFlags(Update::Decoration | Update::FitCursor); - cur.inset().idxNext(cur); + cur.selHandle(false); + cur.clearTargetX(); + cur.macroModeClose(); + if (!cur.inset().idxNext(cur)) { + cur.idx() = firstIdx(); + cur.pos() = 0; + } break; case LFUN_CELL_BACKWARD: cur.screenUpdateFlags(Update::Decoration | Update::FitCursor); - cur.inset().idxPrev(cur); + cur.selHandle(false); + cur.clearTargetX(); + cur.macroModeClose(); + if (!cur.inset().idxPrev(cur)) { + cur.idx() = lastIdx(); + cur.pos() = lyxrc.mac_like_cursor_movement ? cur.lastpos() : 0; + } break; case LFUN_WORD_DELETE_BACKWARD: -- 2.39.2