Do not forget to set cursor current font when selecting

Fix several unreleated cases where the `selecting' code path did not
reset cursor font correctly. This leads to a caret that does not have
the correct size, and can cause caret droppings with the new display
scheme.
This commit is contained in:
Jean-Marc Lasgouttes 2017-10-11 11:56:09 +02:00
parent 0bd6cc30bc
commit 88d0390724
2 changed files with 5 additions and 0 deletions

View File

@ -1974,6 +1974,8 @@ bool Cursor::upDownInText(bool up, bool & updateNeeded)
bool bound = false;
top().pos() = tm.getPosNearX(real_next_row, xo, bound);
boundary(bound);
// When selection==false, this is done by TextMetrics::editXY
setCurrentFont();
updateNeeded |= bv().checkDepm(*this, old);
}

View File

@ -835,6 +835,8 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
break;
}
cur.pos() = cur.lastpos();
cur.boundary(false);
cur.setCurrentFont();
needsUpdate |= cur != old_cur;
break;
@ -1713,6 +1715,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
// reset the anchor.
bvcur.setCursor(cur);
bvcur.selection(true);
bvcur.setCurrentFont();
if (cur.top() == old) {
// We didn't move one iota, so no need to update the screen.
cur.screenUpdateFlags(Update::SinglePar | Update::FitCursor);