diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2014-11-17 12:36:30 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-01-08 18:18:15 +0100 |
commit | 5fa4e1d0981cbe52392f474d0297678915bc48f5 (patch) | |
tree | e0e0fd647a9f0e78774a3028f50cf9ee56c12adf | |
parent | 5cfe7d2074306a72909ea20718c1c4bebeb27bad (diff) |
TextEdit: fix construction time text cache
QQuickTextEdit does not apply cached text to the underlying document
until component construction is complete. However, if text() was called
during the construction (eg. because of a binding), it would blindly
overwrite the cached text with (still) empty document content.
Task-number: QTBUG-41583
Change-Id: I6c5c1b6283d70d8a5ec2c8bd986095ee3c35a14c
Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com>
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 2 | ||||
-rw-r--r-- | tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index b950f96277..27714946f5 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -175,7 +175,7 @@ QQuickTextEdit::QQuickTextEdit(QQuickItem *parent) QString QQuickTextEdit::text() const { Q_D(const QQuickTextEdit); - if (!d->textCached) { + if (!d->textCached && isComponentComplete()) { QQuickTextEditPrivate *d = const_cast<QQuickTextEditPrivate *>(d_func()); #ifndef QT_NO_TEXTHTMLPARSER if (d->richText) diff --git a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp index 4f10b4ce82..c61504ef99 100644 --- a/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp +++ b/tests/auto/quick/qquicktextedit/tst_qquicktextedit.cpp @@ -201,6 +201,7 @@ private slots: void emptytags_QTBUG_22058(); void cursorRectangle_QTBUG_38947(); + void textCached_QTBUG_41583(); private: void simulateKeys(QWindow *window, const QList<Key> &keys); @@ -5302,6 +5303,17 @@ void tst_qquicktextedit::cursorRectangle_QTBUG_38947() QTest::mouseRelease(&window, Qt::LeftButton, Qt::NoModifier, to); } +void tst_qquicktextedit::textCached_QTBUG_41583() +{ + QQmlComponent component(&engine); + component.setData("import QtQuick 2.0\nTextEdit { property int margin: 10; text: \"TextEdit\"; textMargin: margin; property bool empty: !text; }", QUrl()); + QQuickTextEdit *textedit = qobject_cast<QQuickTextEdit*>(component.create()); + QVERIFY(textedit); + QCOMPARE(textedit->textMargin(), qreal(10.0)); + QCOMPARE(textedit->text(), QString("TextEdit")); + QVERIFY(!textedit->property("empty").toBool()); +} + QTEST_MAIN(tst_qquicktextedit) #include "tst_qquicktextedit.moc" |