commit 7137826896beed3590f8dce6e6b7ce3c422ceea2
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Mon Jan 18 15:32:07 2016 +0100

    Allow breaking a row element at a leading space
    
    When an inset is separated from the next strng by a space, it is reasonable 
to be able to break the string after its leading space.
    
    Fixes bug #9921

diff --git a/src/Row.cpp b/src/Row.cpp
index bd09459..2bfe55a 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -128,6 +128,18 @@ bool Row::Element::breakAt(int w, bool force)
                //lyxerr << "breakAt(" << w << ")  Row element Broken at " << x 
<< "(w(str)=" << fm.width(str) << "): e=" << *this << endl;
                return true;
        }
+
+       // Qt will not break at a leading space, and we need that sometimes, see
+       //   http://www.lyx.org/trac/ticket/9921.
+       // It would be nice to fix this properly, but for now do it by hand.
+       // FIXME: figure out what to do for RtL text.
+       if (!isRTL() && !str.empty() && str[0] == ' ') {
+               dim.wid = 0;
+               str = ' ';
+               endpos = pos + 1;
+               return true;
+       }
+
        return false;
 }
 
@@ -466,7 +478,7 @@ void Row::shortenIfNeeded(pos_type const keep, int const w)
                        /* after breakAt, there may be spaces at the end of the
                         * string, but they are not counted in the string length
                         * (QTextLayout feature, actually). We remove them, but 
do
-                        * not change the endo of the row, since the spaces at 
row
+                        * not change the end of the row, since spaces at row
                         * break are invisible.
                         */
                        brk.str = rtrim(brk.str);

Reply via email to