diff options
author | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2019-03-22 14:30:15 +0100 |
---|---|---|
committer | Eirik Aavitsland <eirik.aavitsland@qt.io> | 2019-03-26 12:50:04 +0000 |
commit | 82247946b2733bcd5bb3740a31c7d38fb90f6ddd (patch) | |
tree | f60b25d72923c96ff313b19b04fd9127c7ff18c2 /src/quick/items/qquicktext.cpp | |
parent | 0dab320fb42ba2ac855baf05972c3420c11d002e (diff) |
Fix text wrap: do not break on last line if right elide is enabled
For multiline texts with word wrapping, it is not so meaningful to add
breaks in the last line if it is anyway going to be elided. Fix by
using the WrapAnywhere strategy for the last line for such situations.
Fixes: QTBUG-72736
Change-Id: I1263c81277b6ca89ba461529fced1094263c026f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'src/quick/items/qquicktext.cpp')
-rw-r--r-- | src/quick/items/qquicktext.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp index 73b151168e..d7307daa02 100644 --- a/src/quick/items/qquicktext.cpp +++ b/src/quick/items/qquicktext.cpp @@ -754,6 +754,7 @@ QRectF QQuickTextPrivate::setupTextLayout(qreal *const baseline) bool once = true; int elideStart = 0; int elideEnd = 0; + bool noBreakLastLine = multilineElide && (wrapMode == QQuickText::Wrap || wrapMode == QQuickText::WordWrap); int eos = multilengthEos; @@ -786,11 +787,15 @@ QRectF QQuickTextPrivate::setupTextLayout(qreal *const baseline) QRectF unelidedRect; QTextLine line = layout.createLine(); for (visibleCount = 1; ; ++visibleCount) { + if (noBreakLastLine && visibleCount == maxLineCount) + layout.engine()->option.setWrapMode(QTextOption::WrapAnywhere); if (customLayout) { setupCustomLineGeometry(line, naturalHeight); } else { setLineGeometry(line, lineWidth, naturalHeight); } + if (noBreakLastLine && visibleCount == maxLineCount) + layout.engine()->option.setWrapMode(QTextOption::WrapMode(wrapMode)); unelidedRect = br.united(line.naturalTextRect()); |