From: Jean-Marc Lasgouttes Date: Fri, 11 May 2018 09:27:26 +0000 (+0200) Subject: Avoid crash when trying to handle FitCursor X-Git-Tag: 2.3.1~82 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=45fba1ce1b5b447a047071f62d6dd73aaceae11e;p=features.git Avoid crash when trying to handle FitCursor It is better to handle SinglePar before FitCursor, since the later requires correct metrics at cursor position. Fixes bug #11139 and probably #11125. (cherry picked from commit 7f83d26934e50e3d83e254b0f9ab847d957053f7) --- diff --git a/src/BufferView.cpp b/src/BufferView.cpp index da09fcd273..588dea74b4 100644 --- a/src/BufferView.cpp +++ b/src/BufferView.cpp @@ -461,7 +461,8 @@ string flagsAsString(Update::flags flags) return string((flags & Update::FitCursor) ? "FitCursor " : "") + ((flags & Update::Force) ? "Force " : "") + ((flags & Update::ForceDraw) ? "ForceDraw " : "") - + ((flags & Update::SinglePar) ? "SinglePar " : ""); + + ((flags & Update::SinglePar) ? "SinglePar " : "") + + ((flags & Update::Decoration) ? "Decoration " : ""); } } @@ -487,6 +488,16 @@ void BufferView::processUpdateFlags(Update::flags flags) updateMetrics(flags); } + // Detect whether we can only repaint a single paragraph. + // We handle this before FitCursor because the later will require + // correct metrics at cursor position. + if (!(flags & Update::ForceDraw)) { + if (singleParUpdate()) + flags = flags | Update::SinglePar; + else + updateMetrics(flags); + } + // Then make sure that the screen contains the cursor if needed if (flags & Update::FitCursor) { if (needsFitCursor()) { @@ -497,14 +508,6 @@ void BufferView::processUpdateFlags(Update::flags flags) flags = flags & ~Update::FitCursor; } - // Finally detect whether we can only repaint a single paragraph - if (!(flags & Update::ForceDraw)) { - if (singleParUpdate()) - flags = flags | Update::SinglePar; - else - updateMetrics(flags); - } - // Add flags to the the update flags. These will be reset to None // after the redraw is actually done d->update_flags_ = d->update_flags_ | flags;