aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den-exter@nokia.com>2012-05-16 16:07:47 +1000
committerQt by Nokia <qt-info@nokia.com>2012-05-17 02:39:08 +0200
commit825f53b1a5bfff4bec3f5a1d4d25308477b9a98f (patch)
treed62f45883636736fc09637c6f22b78382ea330bb /tests
parenta03290bd7e988294ec8167dc17865bb94b478f7b (diff)
Fix incorrect text alignment in TextEdit.
QTextDocument always spans the full width of a TextEdit so the text node shouldn't be offset by the x position of the bounding rect. Change-Id: I882a44baeea4d054279cadc5632df6d8863caea1 Reviewed-by: Yann Bodson <yann.bodson@nokia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quick/qquicktextedit/data/hAlignVisual.qml13
-rw-r--r--tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp89
2 files changed, 102 insertions, 0 deletions
diff --git a/tests/auto/quick/qquicktextedit/data/hAlignVisual.qml b/tests/auto/quick/qquicktextedit/data/hAlignVisual.qml
new file mode 100644
index 0000000000..136e5d21a2
--- /dev/null
+++ b/tests/auto/quick/qquicktextedit/data/hAlignVisual.qml
@@ -0,0 +1,13 @@
+import QtQuick 2.0
+
+Rectangle {
+ width: 200
+ height: 100
+
+ Text {
+ objectName: "textItem"
+ text: "AA\nBBBBB\nCCCCCCCCCCCCCCCC"
+ anchors.centerIn: parent
+ horizontalAlignment: Text.AlignLeft
+ }
+}
diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
index c7bf6af6ee..34d7cedca5 100644
--- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
+++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp
@@ -109,6 +109,7 @@ private slots:
// ### these tests may be trivial
void hAlign();
void hAlign_RightToLeft();
+ void hAlignVisual();
void vAlign();
void font();
void color();
@@ -792,6 +793,94 @@ void tst_qquicktextedit::hAlign_RightToLeft()
QVERIFY(emptyEdit->cursorRectangle().left() > canvas.width()/2);
}
+
+static int numberOfNonWhitePixels(int fromX, int toX, const QImage &image)
+{
+ int pixels = 0;
+ for (int x = fromX; x < toX; ++x) {
+ for (int y = 0; y < image.height(); ++y) {
+ if (image.pixel(x, y) != qRgb(255, 255, 255))
+ pixels++;
+ }
+ }
+ return pixels;
+}
+
+void tst_qquicktextedit::hAlignVisual()
+{
+ QQuickView view(testFileUrl("hAlignVisual.qml"));
+ view.show();
+ view.requestActivateWindow();
+ QTest::qWaitForWindowShown(&view);
+
+ QQuickText *text = view.rootObject()->findChild<QQuickText*>("textItem");
+ QVERIFY(text != 0);
+ {
+ // Left Align
+ QImage image = view.grabFrameBuffer();
+ int left = numberOfNonWhitePixels(0, image.width() / 3, image);
+ int mid = numberOfNonWhitePixels(image.width() / 3, 2 * image.width() / 3, image);
+ int right = numberOfNonWhitePixels( 2 * image.width() / 3, image.width(), image);
+ QVERIFY(left > mid);
+ QVERIFY(mid > right);
+ }
+ {
+ // HCenter Align
+ text->setHAlign(QQuickText::AlignHCenter);
+ QImage image = view.grabFrameBuffer();
+ int left = numberOfNonWhitePixels(0, image.width() / 3, image);
+ int mid = numberOfNonWhitePixels(image.width() / 3, 2 * image.width() / 3, image);
+ int right = numberOfNonWhitePixels( 2 * image.width() / 3, image.width(), image);
+ QVERIFY(left < mid);
+ QVERIFY(mid > right);
+ }
+ {
+ // Right Align
+ text->setHAlign(QQuickText::AlignRight);
+ QImage image = view.grabFrameBuffer();
+ int left = numberOfNonWhitePixels(0, image.width() / 3, image);
+ int mid = numberOfNonWhitePixels(image.width() / 3, 2 * image.width() / 3, image);
+ int right = numberOfNonWhitePixels( 2 * image.width() / 3, image.width(), image);
+ QVERIFY(left < mid);
+ QVERIFY(mid < right);
+ }
+
+ text->setWidth(200);
+
+ {
+ // Left Align
+ QImage image = view.grabFrameBuffer();
+ int x = qCeil(text->implicitWidth());
+ int left = numberOfNonWhitePixels(0, x, image);
+ int right = numberOfNonWhitePixels(x, image.width() - x, image);
+ QVERIFY(left > 0);
+ QVERIFY(right == 0);
+ }
+ {
+ // HCenter Align
+ text->setHAlign(QQuickText::AlignHCenter);
+ QImage image = view.grabFrameBuffer();
+ int x1 = qFloor(image.width() - text->implicitWidth()) / 2;
+ int x2 = image.width() - x1;
+ int left = numberOfNonWhitePixels(0, x1, image);
+ int mid = numberOfNonWhitePixels(x1, x2 - x1, image);
+ int right = numberOfNonWhitePixels(x2, image.width() - x2, image);
+ QVERIFY(left == 0);
+ QVERIFY(mid > 0);
+ QVERIFY(right == 0);
+ }
+ {
+ // Right Align
+ text->setHAlign(QQuickText::AlignRight);
+ QImage image = view.grabFrameBuffer();
+ int x = image.width() - qCeil(text->implicitWidth());
+ int left = numberOfNonWhitePixels(0, x, image);
+ int right = numberOfNonWhitePixels(x, image.width() - x, image);
+ QVERIFY(left == 0);
+ QVERIFY(right > 0);
+ }
+}
+
void tst_qquicktextedit::vAlign()
{
//test one align each, and then test if two align fails.