From a4b0ac2af03f4a78469a3dc0e04f785cde4ab381 Mon Sep 17 00:00:00 2001 From: Andrew den Exter Date: Tue, 14 Feb 2012 12:55:38 +1000 Subject: Fix access to context properties within TextEdit.cursorDelegate Don't create the cursorDelegate instance before componentComplete as the context may not be fully populated prior to that. Task-number: QTBUG-21780 Change-Id: I6ca8a24989bc28e5c5ca06d61a85e32ff630ce7c Reviewed-by: Martin Jones --- tests/auto/qtquick2/qquicktextedit/data/Cursor.qml | 5 +++++ .../qtquick2/qquicktextedit/data/cursorTestExternal.qml | 15 +++++++++++++++ .../qtquick2/qquicktextedit/data/cursorTestInline.qml | 15 +++++++++++++++ tests/auto/qtquick2/qquicktextedit/tst_qquicktextedit.cpp | 12 +++++++++++- tests/auto/qtquick2/qquicktextinput/data/Cursor.qml | 5 +++++ .../qtquick2/qquicktextinput/data/cursorTestExternal.qml | 15 +++++++++++++++ .../qtquick2/qquicktextinput/data/cursorTestInline.qml | 15 +++++++++++++++ .../auto/qtquick2/qquicktextinput/tst_qquicktextinput.cpp | 12 +++++++++++- 8 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 tests/auto/qtquick2/qquicktextedit/data/Cursor.qml create mode 100644 tests/auto/qtquick2/qquicktextedit/data/cursorTestExternal.qml create mode 100644 tests/auto/qtquick2/qquicktextedit/data/cursorTestInline.qml create mode 100644 tests/auto/qtquick2/qquicktextinput/data/Cursor.qml create mode 100644 tests/auto/qtquick2/qquicktextinput/data/cursorTestExternal.qml create mode 100644 tests/auto/qtquick2/qquicktextinput/data/cursorTestInline.qml (limited to 'tests') diff --git a/tests/auto/qtquick2/qquicktextedit/data/Cursor.qml b/tests/auto/qtquick2/qquicktextedit/data/Cursor.qml new file mode 100644 index 0000000000..e5c1853fc5 --- /dev/null +++ b/tests/auto/qtquick2/qquicktextedit/data/Cursor.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 + +Rectangle { + property string localProperty +} diff --git a/tests/auto/qtquick2/qquicktextedit/data/cursorTestExternal.qml b/tests/auto/qtquick2/qquicktextedit/data/cursorTestExternal.qml new file mode 100644 index 0000000000..7e916ec818 --- /dev/null +++ b/tests/auto/qtquick2/qquicktextedit/data/cursorTestExternal.qml @@ -0,0 +1,15 @@ +import QtQuick 2.0 + +Rectangle { width: 300; height: 300; color: "white" + property string contextualProperty: "Hello" + TextEdit { + text: "Hello world!" + id: textEditObject; + objectName: "textEditObject" + cursorDelegate: Cursor { + id:cursorInstance; + objectName: "cursorInstance"; + localProperty: contextualProperty; + } + } +} diff --git a/tests/auto/qtquick2/qquicktextedit/data/cursorTestInline.qml b/tests/auto/qtquick2/qquicktextedit/data/cursorTestInline.qml new file mode 100644 index 0000000000..786f39113c --- /dev/null +++ b/tests/auto/qtquick2/qquicktextedit/data/cursorTestInline.qml @@ -0,0 +1,15 @@ +import QtQuick 2.0 + +Rectangle { width: 300; height: 300; color: "white" + property string contextualProperty: "Hello" + TextEdit { + text: "Hello world!" + id: textEditObject + objectName: "textEditObject" + cursorDelegate: Item { + id:cursorInstance + objectName: "cursorInstance" + property string localProperty: contextualProperty + } + } +} diff --git a/tests/auto/qtquick2/qquicktextedit/tst_qquicktextedit.cpp b/tests/auto/qtquick2/qquicktextedit/tst_qquicktextedit.cpp index 77d17d99d6..eb8e711e6a 100644 --- a/tests/auto/qtquick2/qquicktextedit/tst_qquicktextedit.cpp +++ b/tests/auto/qtquick2/qquicktextedit/tst_qquicktextedit.cpp @@ -134,6 +134,7 @@ private slots: void linkActivated(); + void cursorDelegate_data(); void cursorDelegate(); void cursorVisible(); void delegateLoading_data(); @@ -1813,9 +1814,18 @@ void tst_qquicktextedit::linkActivated() QCOMPARE(spy.count(), 2); } +void tst_qquicktextedit::cursorDelegate_data() +{ + QTest::addColumn("source"); + QTest::newRow("out of line") << testFileUrl("cursorTest.qml"); + QTest::newRow("in line") << testFileUrl("cursorTestInline.qml"); + QTest::newRow("external") << testFileUrl("cursorTestExternal.qml"); +} + void tst_qquicktextedit::cursorDelegate() { - QQuickView view(testFileUrl("cursorTest.qml")); + QFETCH(QUrl, source); + QQuickView view(source); view.show(); view.requestActivateWindow(); QQuickTextEdit *textEditObject = view.rootObject()->findChild("textEditObject"); diff --git a/tests/auto/qtquick2/qquicktextinput/data/Cursor.qml b/tests/auto/qtquick2/qquicktextinput/data/Cursor.qml new file mode 100644 index 0000000000..e5c1853fc5 --- /dev/null +++ b/tests/auto/qtquick2/qquicktextinput/data/Cursor.qml @@ -0,0 +1,5 @@ +import QtQuick 2.0 + +Rectangle { + property string localProperty +} diff --git a/tests/auto/qtquick2/qquicktextinput/data/cursorTestExternal.qml b/tests/auto/qtquick2/qquicktextinput/data/cursorTestExternal.qml new file mode 100644 index 0000000000..9277dcc518 --- /dev/null +++ b/tests/auto/qtquick2/qquicktextinput/data/cursorTestExternal.qml @@ -0,0 +1,15 @@ +import QtQuick 2.0 + +Rectangle { width: 300; height: 300; color: "white" + property string contextualProperty: "Hello" + TextInput { + text: "Hello world!" + id: textInputObject; + objectName: "textInputObject" + cursorDelegate: Cursor { + id:cursorInstance; + objectName: "cursorInstance"; + localProperty: contextualProperty; + } + } +} diff --git a/tests/auto/qtquick2/qquicktextinput/data/cursorTestInline.qml b/tests/auto/qtquick2/qquicktextinput/data/cursorTestInline.qml new file mode 100644 index 0000000000..efc4b191da --- /dev/null +++ b/tests/auto/qtquick2/qquicktextinput/data/cursorTestInline.qml @@ -0,0 +1,15 @@ +import QtQuick 2.0 + +Rectangle { width: 300; height: 300; color: "white" + property string contextualProperty: "Hello" + TextInput { + text: "Hello world!" + id: textInputObject + objectName: "textInputObject" + cursorDelegate: Item { + id:cursorInstance + objectName: "cursorInstance" + property string localProperty: contextualProperty + } + } +} diff --git a/tests/auto/qtquick2/qquicktextinput/tst_qquicktextinput.cpp b/tests/auto/qtquick2/qquicktextinput/tst_qquicktextinput.cpp index dd86d03b74..16577376f0 100644 --- a/tests/auto/qtquick2/qquicktextinput/tst_qquicktextinput.cpp +++ b/tests/auto/qtquick2/qquicktextinput/tst_qquicktextinput.cpp @@ -136,6 +136,7 @@ private slots: void inputMethods(); void passwordCharacter(); + void cursorDelegate_data(); void cursorDelegate(); void cursorVisible(); void cursorRectangle(); @@ -2306,9 +2307,18 @@ void tst_qquicktextinput::passwordCharacter() delete textInput; } +void tst_qquicktextinput::cursorDelegate_data() +{ + QTest::addColumn("source"); + QTest::newRow("out of line") << testFileUrl("cursorTest.qml"); + QTest::newRow("in line") << testFileUrl("cursorTestInline.qml"); + QTest::newRow("external") << testFileUrl("cursorTestExternal.qml"); +} + void tst_qquicktextinput::cursorDelegate() { - QQuickView view(testFileUrl("cursorTest.qml")); + QFETCH(QUrl, source); + QQuickView view(source); view.show(); view.requestActivateWindow(); QQuickTextInput *textInputObject = view.rootObject()->findChild("textInputObject"); -- cgit v1.2.3