aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquicktext
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quick/qquicktext')
-rw-r--r--tests/auto/quick/qquicktext/data/hAlignWidthDependsOnImplicitWidth.qml25
-rw-r--r--tests/auto/quick/qquicktext/tst_qquicktext.cpp60
2 files changed, 85 insertions, 0 deletions
diff --git a/tests/auto/quick/qquicktext/data/hAlignWidthDependsOnImplicitWidth.qml b/tests/auto/quick/qquicktext/data/hAlignWidthDependsOnImplicitWidth.qml
new file mode 100644
index 0000000000..4358a58f57
--- /dev/null
+++ b/tests/auto/quick/qquicktext/data/hAlignWidthDependsOnImplicitWidth.qml
@@ -0,0 +1,25 @@
+import QtQuick 2.6
+
+Item {
+ width: 200
+ height: 200
+
+ property alias text: label.text
+ property alias horizontalAlignment: label.horizontalAlignment
+ property alias elide: label.elide
+ property int extraWidth: 0
+
+ Rectangle {
+ border.color: "red"
+ x: 100
+ width: label.implicitWidth + extraWidth
+ height: label.implicitHeight
+
+ Text {
+ id: label
+ anchors.fill: parent
+ text: 'press me'
+ horizontalAlignment: Text.AlignHCenter
+ }
+ }
+}
diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp
index 6f7d494255..2032f72e26 100644
--- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp
+++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp
@@ -151,6 +151,9 @@ private slots:
void zeroWidthAndElidedDoesntRender();
+ void hAlignWidthDependsOnImplicitWidth_data();
+ void hAlignWidthDependsOnImplicitWidth();
+
private:
QStringList standard;
QStringList richText;
@@ -4115,6 +4118,18 @@ void tst_qquicktext::padding()
QCOMPARE(obj->bottomPadding(), 1.11);
QCOMPARE(obj->implicitHeight(), ch + obj->topPadding() + obj->bottomPadding());
+ obj->setWidth(cw / 2);
+ obj->setElideMode(QQuickText::ElideRight);
+ QCOMPARE(obj->implicitWidth(), cw + obj->leftPadding() + obj->rightPadding());
+ QCOMPARE(obj->implicitHeight(), ch + obj->topPadding() + obj->bottomPadding());
+ obj->setElideMode(QQuickText::ElideNone);
+ obj->resetWidth();
+
+ obj->setWrapMode(QQuickText::WordWrap);
+ QCOMPARE(obj->implicitWidth(), cw + obj->leftPadding() + obj->rightPadding());
+ QCOMPARE(obj->implicitHeight(), ch + obj->topPadding() + obj->bottomPadding());
+ obj->setWrapMode(QQuickText::NoWrap);
+
obj->setText("Qt");
QVERIFY(obj->contentWidth() < cw);
QCOMPARE(obj->contentHeight(), ch);
@@ -4198,6 +4213,51 @@ void tst_qquicktext::zeroWidthAndElidedDoesntRender()
QCOMPARE(text->contentWidth(), reference->contentWidth());
}
+void tst_qquicktext::hAlignWidthDependsOnImplicitWidth_data()
+{
+ QTest::addColumn<QQuickText::HAlignment>("horizontalAlignment");
+ QTest::addColumn<QQuickText::TextElideMode>("elide");
+ QTest::addColumn<int>("extraWidth");
+
+ QTest::newRow("AlignHCenter, ElideNone, 0 extraWidth") << QQuickText::AlignHCenter << QQuickText::ElideNone << 0;
+ QTest::newRow("AlignRight, ElideNone, 0 extraWidth") << QQuickText::AlignRight << QQuickText::ElideNone << 0;
+ QTest::newRow("AlignHCenter, ElideRight, 0 extraWidth") << QQuickText::AlignHCenter << QQuickText::ElideRight << 0;
+ QTest::newRow("AlignRight, ElideRight, 0 extraWidth") << QQuickText::AlignRight << QQuickText::ElideRight << 0;
+ QTest::newRow("AlignHCenter, ElideNone, 20 extraWidth") << QQuickText::AlignHCenter << QQuickText::ElideNone << 20;
+ QTest::newRow("AlignRight, ElideNone, 20 extraWidth") << QQuickText::AlignRight << QQuickText::ElideNone << 20;
+ QTest::newRow("AlignHCenter, ElideRight, 20 extraWidth") << QQuickText::AlignHCenter << QQuickText::ElideRight << 20;
+ QTest::newRow("AlignRight, ElideRight, 20 extraWidth") << QQuickText::AlignRight << QQuickText::ElideRight << 20;
+}
+
+void tst_qquicktext::hAlignWidthDependsOnImplicitWidth()
+{
+ QFETCH(QQuickText::HAlignment, horizontalAlignment);
+ QFETCH(QQuickText::TextElideMode, elide);
+ QFETCH(int, extraWidth);
+
+ QScopedPointer<QQuickView> window(new QQuickView);
+ window->setSource(testFileUrl("hAlignWidthDependsOnImplicitWidth.qml"));
+ QTRY_COMPARE(window->status(), QQuickView::Ready);
+
+ window->show();
+ QVERIFY(QTest::qWaitForWindowExposed(window.data()));
+
+ QQuickItem *rect = window->rootObject();
+ QVERIFY(rect);
+
+ QVERIFY(rect->setProperty("horizontalAlignment", horizontalAlignment));
+ QVERIFY(rect->setProperty("elide", elide));
+ QVERIFY(rect->setProperty("extraWidth", extraWidth));
+
+ QImage image = window->grabWindow();
+ const int rectX = 100 * window->screen()->devicePixelRatio();
+ QCOMPARE(numberOfNonWhitePixels(0, rectX - 1, image), 0);
+
+ QVERIFY(rect->setProperty("text", "this is mis-aligned"));
+ image = window->grabWindow();
+ QCOMPARE(numberOfNonWhitePixels(0, rectX - 1, image), 0);
+}
+
QTEST_MAIN(tst_qquicktext)
#include "tst_qquicktext.moc"