From 82310bc78b5c52bfe0a2eca5d3a67bdfc81d1dd9 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Wed, 17 May 2017 21:07:34 +0200 Subject: 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 --- tests/auto/revisions/tst_revisions.cpp | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'tests/auto/revisions') 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("revision"); + QTest::addColumn("qml"); + QTest::addColumn("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 window(component.create()); + QCOMPARE(window.isNull(), !error.isEmpty()); +} + QTEST_MAIN(tst_revisions) #include "tst_revisions.moc" -- cgit v1.2.3