diff options
author | Mitch Curtis <mitch.curtis@digia.com> | 2014-03-20 10:54:21 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-20 15:42:21 +0100 |
commit | 6ac69be3148822a0dafce227eab19b97722b6cc2 (patch) | |
tree | 0fdd20877a2dc51e3f16441595a1aee8cc37c406 | |
parent | 9aac83d22ddbebc22fb1360d710263d349c2fdda (diff) | |
download | qtquick1-6ac69be3148822a0dafce227eab19b97722b6cc2.tar.gz |
Correct QDeclarativeTextEdit::positionToRectangle().v5.3.0-beta1
d->yoff is the content offset when the content is not top aligned.
This means that positionToRectangle() returned incorrect values when
the content was bottom or vertical center aligned. In other words,
it didn't apply the offset but gave coordinates from the beginning of
the content instead of from the beginning of the item.
Change-Id: I044b79434b9a67b0539050e39953d5889a3ed1db
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
-rw-r--r-- | src/declarative/graphicsitems/qdeclarativetextedit.cpp | 2 | ||||
-rw-r--r-- | tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp | 24 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp index bdcc66ba..a2e8e65c 100644 --- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp @@ -673,7 +673,7 @@ QRectF QDeclarativeTextEdit::positionToRectangle(int pos) const Q_D(const QDeclarativeTextEdit); QTextCursor c(d->document); c.setPosition(pos); - return d->control->cursorRect(c); + return d->control->cursorRect(c).translated(0, d->yoff); } diff --git a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp index ccf7d66f..a348545a 100644 --- a/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp +++ b/tests/auto/declarative/qdeclarativetextedit/tst_qdeclarativetextedit.cpp @@ -639,6 +639,30 @@ void tst_qdeclarativetextedit::vAlign() } } + QDeclarativeComponent texteditComponent(&engine); + texteditComponent.setData("import QtQuick 1.0\n TextEdit { width: 200; height: 200; text: \"Hello World\" }", QUrl()); + QDeclarativeTextEdit *textEditObject = qobject_cast<QDeclarativeTextEdit*>(texteditComponent.create()); + + QVERIFY(textEditObject != 0); + + QCOMPARE(textEditObject->vAlign(), QDeclarativeTextEdit::AlignTop); + QVERIFY(textEditObject->cursorRectangle().bottom() < 50); + QVERIFY(textEditObject->positionToRectangle(0).bottom() < 50); + + // bottom aligned + textEditObject->setVAlign(QDeclarativeTextEdit::AlignBottom); + + QCOMPARE(textEditObject->vAlign(), QDeclarativeTextEdit::AlignBottom); + QVERIFY(textEditObject->cursorRectangle().top() > 100); + QVERIFY(textEditObject->positionToRectangle(0).top() > 100); + + // explicitly center aligned + textEditObject->setVAlign(QDeclarativeTextEdit::AlignVCenter); + QCOMPARE(textEditObject->vAlign(), QDeclarativeTextEdit::AlignVCenter); + QVERIFY(textEditObject->cursorRectangle().top() < 100); + QVERIFY(textEditObject->cursorRectangle().bottom() > 100); + QVERIFY(textEditObject->positionToRectangle(0).top() < 100); + QVERIFY(textEditObject->positionToRectangle(0).bottom() > 100); } void tst_qdeclarativetextedit::font() |