diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2012-05-16 16:07:47 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-17 02:39:08 +0200 |
commit | 825f53b1a5bfff4bec3f5a1d4d25308477b9a98f (patch) | |
tree | d62f45883636736fc09637c6f22b78382ea330bb /tests | |
parent | a03290bd7e988294ec8167dc17865bb94b478f7b (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.qml | 13 | ||||
-rw-r--r-- | tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp | 89 |
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. |