[LyX/master] Text::dispatch: ignore single par update when there is a full update

Jean-Marc Lasgouttes lasgouttes at lyx.org
Fri Jun 7 14:52:28 UTC 2024


commit a1856427468cd4e442c77f394715c825d919f902
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Fri Jun 7 16:49:25 2024 +0200

    Text::dispatch: ignore single par update when there is a full update
    
    Reorder the tests so that, when the flag Update::SinglePar has been
    specified, it does not take precedence over Update::Force flag.
    
    This fixes the crash with inset-split.
---
 src/Text.cpp | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)

diff --git a/src/Text.cpp b/src/Text.cpp
index c6e2e054fb..f9c1037ad3 100644
--- a/src/Text.cpp
+++ b/src/Text.cpp
@@ -6378,27 +6378,17 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 		}
 	}
 
-	// FIXME: The cursor flag is reset two lines below
-	// so we need to check here if some of the LFUN did touch that.
-	// for now only Text::erase() and Text::backspace() do that.
-	// The plan is to verify all the LFUNs and then to remove this
-	// singleParUpdate boolean altogether.
-	if (cur.result().screenUpdate() & Update::Force) {
-		singleParUpdate = false;
-		needsUpdate = true;
-	}
-
 	// FIXME: the following code should go in favor of fine grained
 	// update flag treatment.
-	if (singleParUpdate || cur.result().screenUpdate() & Update::SinglePar) {
+	if (needsUpdate || cur.result().screenUpdate() & Update::Force)
+		cur.screenUpdateFlags(Update::Force | Update::FitCursor);
+	else if (singleParUpdate || cur.result().screenUpdate() & Update::SinglePar) {
 		// Inserting characters does not change par height in general. So, try
 		// to update _only_ this paragraph. BufferView will detect if a full
 		// metrics update is needed anyway.
 		cur.screenUpdateFlags(Update::SinglePar | Update::FitCursor);
 		return;
 	}
-	if (needsUpdate)
-		cur.screenUpdateFlags(Update::Force | Update::FitCursor);
 	else {
 		// oldSelection is a backup of cur.selection() at the beginning of the function.
 	    if (!oldSelection && !cur.selection())


More information about the lyx-cvs mailing list