#include "Paragraph.h"
#include "ParagraphParameters.h"
#include "ParIterator.h"
-#include "RowPainter.h"
#include "Session.h"
#include "Text.h"
#include "TextClass.h"
// 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_;
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);
}
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);