mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 10:00:33 +00:00
Fix ghost caret
This fixes a regression ine64ea357
, where a test has been (badly) tightened to avoid that two consecutive rows may be redrawn to get rid of caret ghosts. The test prohibited empty rows from being redrawn. Moreover, improve the test of cursor boundary to avoid the case where cursor position is already 0. Fixes bug #10952. (cherry picked from commit66c677b946
)
This commit is contained in:
parent
be35ba31bf
commit
61c5769e39
@ -2978,8 +2978,14 @@ namespace {
|
||||
|
||||
bool sliceInRow(CursorSlice const & cs, Text const * text, Row const & row)
|
||||
{
|
||||
/* The normal case is the last line. The previous line takes care
|
||||
* of empty rows (e.g. empty paragraphs). Cursor boundary issues
|
||||
* are taken care of when setting caret_slice_ in
|
||||
* BufferView::draw.
|
||||
*/
|
||||
return !cs.empty() && cs.text() == text && cs.pit() == row.pit()
|
||||
&& row.pos() <= cs.pos() && cs.pos() < row.endpos();
|
||||
&& ((row.pos() == row.endpos() && row.pos() == cs.pos())
|
||||
|| (row.pos() <= cs.pos() && cs.pos() < row.endpos()));
|
||||
}
|
||||
|
||||
}
|
||||
@ -3164,8 +3170,9 @@ void BufferView::draw(frontend::Painter & pain, bool paint_caret)
|
||||
// Remember what has just been done for the next draw() step
|
||||
if (paint_caret) {
|
||||
d->caret_slice_ = d->cursor_.top();
|
||||
if (d->cursor_.boundary()
|
||||
|| d->cursor_.top().pos() == d->cursor_.top().lastpos())
|
||||
if (d->caret_slice_.pos() > 0
|
||||
&& (d->cursor_.boundary()
|
||||
|| d->caret_slice_.pos() == d->caret_slice_.lastpos()))
|
||||
--d->caret_slice_.pos();
|
||||
} else
|
||||
d->caret_slice_ = CursorSlice();
|
||||
|
Loading…
Reference in New Issue
Block a user