aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquicktext.cpp5
-rw-r--r--tests/manual/scenegraph_lancelot/data/text/text_wrap_elide_maxlines.qml133
2 files changed, 138 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());
diff --git a/tests/manual/scenegraph_lancelot/data/text/text_wrap_elide_maxlines.qml b/tests/manual/scenegraph_lancelot/data/text/text_wrap_elide_maxlines.qml
new file mode 100644
index 0000000000..927f2b3148
--- /dev/null
+++ b/tests/manual/scenegraph_lancelot/data/text/text_wrap_elide_maxlines.qml
@@ -0,0 +1,133 @@
+import QtQuick 2.0
+
+//test wrapping and elision when maximumLineCount is set
+
+Item {
+ width: 320
+ height: 480
+ Rectangle {
+ id: text_area
+ color: "light yellow"
+ x: 50
+ y: 0
+ height: parent.height
+ width: 150
+ }
+ Text {
+ id: text_0000
+ wrapMode: Text.WrapAnywhere
+ text: "The quick brown fox jumps over the lazy dog."
+ x: text_area.x
+ y: text_area.y
+ width: text_area.width
+ maximumLineCount: 2
+ elide: Text.ElideRight
+ color: "red"
+ font.family: "Arial"
+ font.pixelSize: 22
+ }
+ Text {
+ id: text_0001
+ wrapMode: Text.Wrap
+ text: text_0000.text
+ anchors.top: text_0000.bottom
+ anchors.left: text_0000.left
+ width: text_0000.width
+ maximumLineCount: text_0000.maximumLineCount
+ elide: Text.ElideRight
+ color: "blue"
+ font.family: text_0000.font.family
+ font.pixelSize: text_0000.font.pixelSize
+ }
+ Text {
+ id: text_0002
+ wrapMode: Text.WordWrap
+ text: text_0000.text
+ anchors.top: text_0001.bottom
+ anchors.left: text_0000.left
+ width: text_0000.width
+ maximumLineCount: text_0000.maximumLineCount
+ elide: Text.ElideRight
+ color: "green"
+ font.family: text_0000.font.family
+ font.pixelSize: text_0000.font.pixelSize
+ }
+ Text {
+ id: text_0003
+ wrapMode: Text.WrapAnywhere
+ text: "ABCDEFGHIJKL 1234567890123"
+ anchors.top: text_0002.bottom
+ anchors.left: text_0000.left
+ width: 150
+ maximumLineCount: 2
+ elide: Text.ElideRight
+ color: "red"
+ font.family: text_0000.font.family
+ font.pixelSize: text_0000.font.pixelSize
+ }
+ Text {
+ id: text_0004
+ wrapMode: Text.Wrap
+ text: text_0003.text
+ anchors.top: text_0003.bottom
+ anchors.left: text_0000.left
+ width: text_0000.width
+ maximumLineCount: text_0000.maximumLineCount
+ elide: Text.ElideRight
+ color: "blue"
+ font.family: text_0000.font.family
+ font.pixelSize: text_0000.font.pixelSize
+ }
+ Text {
+ id: text_0005
+ wrapMode: Text.WordWrap
+ text: text_0003.text
+ anchors.top: text_0004.bottom
+ anchors.left: text_0000.left
+ width: text_0000.width
+ maximumLineCount: text_0000.maximumLineCount
+ elide: Text.ElideRight
+ color: "green"
+ font.family: text_0000.font.family
+ font.pixelSize: text_0000.font.pixelSize
+ }
+ Text {
+ id: text_0006
+ wrapMode: Text.WrapAnywhere
+ text: "The quick brown 1234567890123"
+ anchors.top: text_0005.bottom
+ anchors.left: text_0000.left
+ width: 150
+ maximumLineCount: 2
+ elide: Text.ElideRight
+ color: "red"
+ font.family: text_0000.font.family
+ font.pixelSize: text_0000.font.pixelSize
+ }
+ Text {
+ id: text_0007
+ wrapMode: Text.Wrap
+ text: text_0006.text
+ anchors.top: text_0006.bottom
+ anchors.left: text_0000.left
+ width: text_0000.width
+ maximumLineCount: text_0000.maximumLineCount
+ elide: Text.ElideRight
+ color: "blue"
+ font.family: text_0000.font.family
+ font.pixelSize: text_0000.font.pixelSize
+ }
+ Text {
+ id: text_0008
+ wrapMode: Text.WordWrap
+ text: text_0006.text
+ anchors.top: text_0007.bottom
+ anchors.left: text_0000.left
+ width: text_0000.width
+ maximumLineCount: text_0000.maximumLineCount
+ elide: Text.ElideRight
+ color: "green"
+ font.family: text_0000.font.family
+ font.pixelSize: text_0000.font.pixelSize
+ }
+}