[LyX/master] Fixup 71d9f6e9: swap two tests to avoid line breaking issues

Jean-Marc Lasgouttes lasgouttes at lyx.org
Thu Feb 29 09:47:33 UTC 2024


commit 677a2c2cd14d4e607648be41c9b90b42eda9a764
Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
Date:   Wed Feb 28 11:27:52 2024 +0100

    Fixup 71d9f6e9: swap two tests to avoid line breaking issues
    
    The new approach to line breaking introduced in 71d9f6e9 is correct,
    but the newly introduced min_row_wid should not be updated when the
    remaining line width after a break is larger than next_width.
    
    Swapping the two tests fixes remaining issues.
    
    Fixes (for good?) #12899.
---
 src/Row.cpp | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/Row.cpp b/src/Row.cpp
index 20a05c3bae..86b4e5014c 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -605,14 +605,6 @@ Row::Elements Row::shortenIfNeeded(int const max_width, int const next_width)
 		 */
 		int const split_width =  min(max_width - wid_brk, brk.dim.wid - 2);
 		if (brk.splitAt(split_width, next_width, BEST_EFFORT, tail)) {
-			// if we did not manage to fit a part of the element into
-			// the split_width limit, at least remember that we can
-			// shorten the row if needed.
-			if (brk.dim.wid > split_width) {
-				min_row_wid = wid_brk + brk.dim.wid;
-				tail.clear();
-				continue;
-			}
 			/* if this element originally did not cause a row overflow
 			 * in itself, and the remainder of the row would still be
 			 * too large after breaking, then we will have issues in
@@ -623,6 +615,15 @@ Row::Elements Row::shortenIfNeeded(int const max_width, int const next_width)
 				tail.clear();
 				break;
 			}
+			/* if we did not manage to fit a part of the element into
+			 * the split_width limit, at least remember that we can
+			 * shorten the row if needed.
+			 */
+			if (brk.dim.wid > split_width) {
+				min_row_wid = wid_brk + brk.dim.wid;
+				tail.clear();
+				continue;
+			}
 			// We have found a proper place where to break this string element.
 			end_ = brk.endpos;
 			*cit_brk = brk;


More information about the lyx-cvs mailing list