aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-05-17 21:07:34 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-05-18 20:15:34 +0000
commit82310bc78b5c52bfe0a2eca5d3a67bdfc81d1dd9 (patch)
tree190707f98e9ca5360cbaa7d3a1edb1398db185bc
parentd0748129835e5977c144874e5ccaf8a7e4fb0b54 (diff)
ApplicationWindow: fix access to revisioned members in base classes
The inheritance hierarcy is: QWindow <- QQuickWindow <- QQuickWindowQmlImpl <- QQuickAppWindow Each base class has its own set of revisioned members. Import the revisioned members in the base classes to the templates/controls namespace by calling qmlRegisterRevision() with the revision of the base class and the respective templates/controls version. Task-number: QTBUG-60893 Change-Id: I6d91209dc5b2eb17c2b3845675a5ddbffb7e8b72 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
-rw-r--r--src/imports/controls/ApplicationWindow.qml2
-rw-r--r--src/imports/controls/material/ApplicationWindow.qml2
-rw-r--r--src/imports/controls/universal/ApplicationWindow.qml1
-rw-r--r--src/imports/templates/qtquicktemplates2plugin.cpp2
-rw-r--r--tests/auto/revisions/tst_revisions.cpp31
5 files changed, 36 insertions, 2 deletions
diff --git a/src/imports/controls/ApplicationWindow.qml b/src/imports/controls/ApplicationWindow.qml
index 1dd39279..af3986ac 100644
--- a/src/imports/controls/ApplicationWindow.qml
+++ b/src/imports/controls/ApplicationWindow.qml
@@ -35,9 +35,9 @@
****************************************************************************/
import QtQuick 2.9
+import QtQuick.Window 2.3
import QtQuick.Controls 2.2
import QtQuick.Controls.impl 2.2
-import QtQuick.Window 2.2
import QtQuick.Templates 2.2 as T
T.ApplicationWindow {
diff --git a/src/imports/controls/material/ApplicationWindow.qml b/src/imports/controls/material/ApplicationWindow.qml
index 82a0d135..0d56ed2c 100644
--- a/src/imports/controls/material/ApplicationWindow.qml
+++ b/src/imports/controls/material/ApplicationWindow.qml
@@ -35,7 +35,7 @@
****************************************************************************/
import QtQuick 2.9
-import QtQuick.Window 2.2
+import QtQuick.Window 2.3
import QtQuick.Templates 2.2 as T
import QtQuick.Controls.Material 2.2
diff --git a/src/imports/controls/universal/ApplicationWindow.qml b/src/imports/controls/universal/ApplicationWindow.qml
index a9d03c8c..3f3926de 100644
--- a/src/imports/controls/universal/ApplicationWindow.qml
+++ b/src/imports/controls/universal/ApplicationWindow.qml
@@ -35,6 +35,7 @@
****************************************************************************/
import QtQuick 2.9
+import QtQuick.Window 2.3
import QtQuick.Templates 2.2 as T
import QtQuick.Controls.Universal 2.2
import QtQuick.Controls.Universal.impl 2.2
diff --git a/src/imports/templates/qtquicktemplates2plugin.cpp b/src/imports/templates/qtquicktemplates2plugin.cpp
index e7cb8540..263d7fde 100644
--- a/src/imports/templates/qtquicktemplates2plugin.cpp
+++ b/src/imports/templates/qtquicktemplates2plugin.cpp
@@ -213,6 +213,7 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri)
qmlRegisterRevision<QQuickText, 6>(uri, 2, 0);
qmlRegisterRevision<QQuickTextInput, 7>(uri, 2, 0);
qmlRegisterRevision<QQuickTextEdit, 7>(uri, 2, 0);
+ qmlRegisterRevision<QWindow, 3>(uri, 2, 0);
// QtQuick.Templates 2.1 (new types and revisions in Qt 5.8)
qmlRegisterType<QQuickButtonGroup, 1>(uri, 2, 1, "ButtonGroup");
@@ -260,6 +261,7 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri)
// make revisioned properties available to their subclasses (synced with Qt 5.9)
qmlRegisterRevision<QQuickText, 9>(uri, 2, 2);
qmlRegisterRevision<QQuickTextInput, 9>(uri, 2, 2);
+ qmlRegisterRevision<QQuickWindowQmlImpl, 2>(uri, 2, 2);
}
QT_END_NAMESPACE
diff --git a/tests/auto/revisions/tst_revisions.cpp b/tests/auto/revisions/tst_revisions.cpp
index 8a7a5d6e..606cea33 100644
--- a/tests/auto/revisions/tst_revisions.cpp
+++ b/tests/auto/revisions/tst_revisions.cpp
@@ -46,6 +46,9 @@ class tst_revisions : public QObject
private slots:
void revisions_data();
void revisions();
+
+ void window_data();
+ void window();
};
void tst_revisions::revisions_data()
@@ -77,6 +80,34 @@ void tst_revisions::revisions()
QVERIFY2(!object.isNull(), qPrintable(component.errorString()));
}
+void tst_revisions::window_data()
+{
+ QTest::addColumn<int>("revision");
+ QTest::addColumn<QString>("qml");
+ QTest::addColumn<QString>("error");
+
+ // Qt 5.7: 2.0, Qt 5.8: 2.1
+ for (int i = 0; i <= 1; ++i)
+ QTest::newRow(qPrintable(QString("screen:2.%1").arg(i))) << i << "screen: null" << QString(":1 \"ApplicationWindow.screen\" is not available in QtQuick.Templates 2.%1").arg(i);
+
+ // Qt 5.9: 2.2, Qt 5.10: 2.3...
+ for (int i = 2; i <= QT_VERSION_MINOR - 7; ++i)
+ QTest::newRow(qPrintable(QString("screen:2.%1").arg(i))) << i << "screen: null" << "";
+}
+
+void tst_revisions::window()
+{
+ QFETCH(int, revision);
+ QFETCH(QString, qml);
+ QFETCH(QString, error);
+
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+ component.setData(QString("import QtQuick.Templates 2.%1; ApplicationWindow { %2 }").arg(revision).arg(qml).toUtf8(), QUrl());
+ QScopedPointer<QObject> window(component.create());
+ QCOMPARE(window.isNull(), !error.isEmpty());
+}
+
QTEST_MAIN(tst_revisions)
#include "tst_revisions.moc"