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
This commit is contained in:
Jean-Marc Lasgouttes 2016-01-18 15:32:07 +01:00
parent 41d5acdca3
commit 7137826896

View File

@ -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);