diff --git a/src/BufferView.cpp b/src/BufferView.cpp index 41d85bf400..19425cc1c5 100644 --- a/src/BufferView.cpp +++ b/src/BufferView.cpp @@ -46,7 +46,6 @@ #include "Paragraph.h" #include "ParagraphParameters.h" #include "ParIterator.h" -#include "RowPainter.h" #include "Session.h" #include "Text.h" #include "TextClass.h" @@ -2987,29 +2986,6 @@ void BufferView::checkCursorScrollOffset(PainterInfo & pi) // Set the row on which the cursor lives. setCurrentRowSlice(rowSlice); - /** FIXME: the code below adds an extraneous computation of inset - * positions, and can therefore be bad for performance (think for - * example about a very large tabular inset. Redawing the row - * where it is means redrawing the whole screen). - * - * The bug that this fixes is the following: assume that there is - * a very large math inset. Upon entering the inset, when pressing - * `End', the row is not scrolled and the cursor is not visible. I - * am not sure why the extra row computation fixes the problem, - * actually. - * - * A proper fix should be found and this code should be removed. - */ - // Force the recomputation of inset positions - bool const drawing = pi.pain.isDrawingEnabled(); - pi.pain.setDrawingEnabled(false); - // No need to care about vertical position. - RowPainter rp(pi, buffer().text(), d->cursor_.bottom().pit(), row, - -d->horiz_scroll_offset_, 0); - rp.paintText(); - pi.pain.setDrawingEnabled(drawing); - /** END of bad code */ - // Current x position of the cursor in pixels int const cur_x = getPos(d->cursor_).x_; diff --git a/src/mathed/InsetMathGrid.cpp b/src/mathed/InsetMathGrid.cpp index 2591e5d9d8..7676420d94 100644 --- a/src/mathed/InsetMathGrid.cpp +++ b/src/mathed/InsetMathGrid.cpp @@ -1655,12 +1655,13 @@ void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd) break; } - case LFUN_LINE_BEGIN_SELECT: case LFUN_LINE_BEGIN: - case LFUN_WORD_BACKWARD_SELECT: case LFUN_WORD_BACKWARD: - case LFUN_WORD_LEFT_SELECT: case LFUN_WORD_LEFT: + cur.screenUpdateFlags(Update::Decoration | Update::FitCursor); + case LFUN_LINE_BEGIN_SELECT: + case LFUN_WORD_BACKWARD_SELECT: + case LFUN_WORD_LEFT_SELECT: cur.selHandle(act == LFUN_WORD_BACKWARD_SELECT || act == LFUN_WORD_LEFT_SELECT || act == LFUN_LINE_BEGIN_SELECT); @@ -1679,12 +1680,13 @@ void InsetMathGrid::doDispatch(Cursor & cur, FuncRequest & cmd) } break; - case LFUN_WORD_FORWARD_SELECT: case LFUN_WORD_FORWARD: - case LFUN_WORD_RIGHT_SELECT: case LFUN_WORD_RIGHT: - case LFUN_LINE_END_SELECT: case LFUN_LINE_END: + cur.screenUpdateFlags(Update::Decoration | Update::FitCursor); + case LFUN_WORD_FORWARD_SELECT: + case LFUN_WORD_RIGHT_SELECT: + case LFUN_LINE_END_SELECT: cur.selHandle(act == LFUN_WORD_FORWARD_SELECT || act == LFUN_WORD_RIGHT_SELECT || act == LFUN_LINE_END_SELECT);