]> git.lyx.org Git - features.git/commitdiff
Avoid crash with cursor down in math
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 20 Sep 2018 20:15:12 +0000 (22:15 +0200)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 21 Sep 2018 16:43:53 +0000 (18:43 +0200)
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.

(cherry picked from commit 17576fb83b5a560fb8a1c59ca7051dcb2b165c05)

src/mathed/InsetMathGrid.cpp
status.23x

index 9c3bd580cca3cd023e4a4e319620f1ded4e0dc92..71bcf84fed910446e8a5f4b1f2edaa863c3121f8 100644 (file)
@@ -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;
 }
 
index 65735fe2b6e98431295b487ff7606fe64d7e2bdf..d2e92912e48eccf7cef2d3f0b0886e2d40642696 100644 (file)
@@ -108,6 +108,8 @@ What's new
 
 - Ignore horizontal wheel scrolling in work area (bug 11257).
 
+- Avoid crash wne cursor is outside of workarea (bug 11296).
+
 
 
 * USER INTERFACE