]> git.lyx.org Git - lyx.git/commitdiff
Revert "Avoid row breaking at inconvenient places."
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Mon, 25 Sep 2023 10:28:01 +0000 (12:28 +0200)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Mon, 25 Sep 2023 10:28:51 +0000 (12:28 +0200)
The solution did create new issues.

Fixes bug #12899.
Unfixes bug #12660.

This reverts commit f7de345f85b4a34346fc52b60a9e754b466d24f0.

src/Row.cpp

index a7f09e52737415e26d5e5bd3206056e1b14575c7..a7f00d536d7219cf7d3c0f9783432d2fed3996a1 100644 (file)
@@ -602,31 +602,12 @@ Row::Elements Row::shortenIfNeeded(int const max_width, int const next_width)
                 */
                if (brk.splitAt(min(max_width - wid_brk, brk.dim.wid - 2), next_width, false, tail)) {
                        /* if this element originally did not cause a row overflow
-                        * in itself, and the next item is not breakable and would
-                        * still be too large after breaking, then we will have
-                        * issues in next row. Thus breaking does not help.
-                        *
-                        * FIXME: this is not perfect, since it is difficult to
-                        * know whether next element in tail is too large:
-                        *
-                        * - next element could be a very long word, which is
-                        *   theoretically breakable, but not in practice
-                        *   (difficult to solve).
-                        *
-                        * - next element could be short enough, but linked to
-                        *   another one with a NoBreak bond.
-                        *
-                        * Basically, it is difficult to solve that in a purely
-                        * left-to-right algorithm; implementing the TeX badness
-                        * algorithm is more difficult and more costly, so we do
-                        * our best in our restricted setting.
+                        * in itself, and the remainder of the row would still be
+                        * too large after breaking, then we will have issues in
+                        * next row. Thus breaking does not help.
                         */
-                       auto const cit_next = cit_brk + 1;
-                       int const tail_wid = !tail.empty() ? tail.front().dim.wid : 0;
                        if (wid_brk + cit_brk->dim.wid < max_width
-                           && cit_next != elements_.end()
-                           && tail_wid + cit_next->dim.wid > next_width
-                           && !(cit_next->row_flags & CanBreakInside)) {
+                           && dim_.wid - (wid_brk + brk.dim.wid) >= next_width) {
                                tail.clear();
                                break;
                        }