From 88d0390724c60410dd680a2528eab5c91b1252ce Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Wed, 11 Oct 2017 11:56:09 +0200 Subject: [PATCH] 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. --- src/Cursor.cpp | 2 ++ src/Text3.cpp | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/Cursor.cpp b/src/Cursor.cpp index 0d68648685..d21570a41f 100644 --- a/src/Cursor.cpp +++ b/src/Cursor.cpp @@ -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); } diff --git a/src/Text3.cpp b/src/Text3.cpp index f6930aa591..930b5347c2 100644 --- a/src/Text3.cpp +++ b/src/Text3.cpp @@ -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);