From: Jean-Marc Lasgouttes Date: Thu, 20 Sep 2018 20:15:12 +0000 (+0200) Subject: Avoid crash with cursor down in math X-Git-Tag: lyx-2.4.0dev-acb2ca7b~3043 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=17576fb83b5a560fb8a1c59ca7051dcb2b165c05;p=features.git Avoid crash with cursor down in math This can happen when the inset that contains the cursor is outside of the screen. THis is only a workaround. The real solution would be a processUpdateFlags(FitCursor) call, but the code is not ready for that yet. Fixes bug #11296. --- diff --git a/src/mathed/InsetMathGrid.cpp b/src/mathed/InsetMathGrid.cpp index cb6f440539..58784ad79b 100644 --- a/src/mathed/InsetMathGrid.cpp +++ b/src/mathed/InsetMathGrid.cpp @@ -22,6 +22,7 @@ #include "Buffer.h" #include "BufferParams.h" #include "BufferView.h" +#include "CoordCache.h" #include "Cursor.h" #include "CutAndPaste.h" #include "FuncRequest.h" @@ -969,7 +970,14 @@ bool InsetMathGrid::idxUpDown(Cursor & cur, bool up) const LASSERT(cur.idx() > 0, return false); --cur.idx(); } - cur.pos() = cur.cell().x2pos(&cur.bv(), cur.x_target() - cur.cell().xo(cur.bv())); + // FIXME: this is only a workaround to avoid a crash if the inset + // in not in coord cache. The best would be to force a FitCursor + // operation. + CoordCache::Arrays const & arraysCache = cur.bv().coordCache().arrays(); + if (arraysCache.has(&cur.cell())) + cur.pos() = cur.cell().x2pos(&cur.bv(), cur.x_target() - cur.cell().xo(cur.bv())); + else + cur.pos() = 0; return true; }