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.

(cherry picked from commit 17576fb83b)
This commit is contained in:
Jean-Marc Lasgouttes 2018-09-20 22:15:12 +02:00
parent bf3b81e46a
commit ebd4e25588
2 changed files with 11 additions and 1 deletions

View 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;
}

View 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