aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/styleimports
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/styleimports')
-rw-r--r--tests/auto/styleimports/CMakeLists.txt11
-rw-r--r--tests/auto/styleimports/data/applicationWindowWithButton.qml (renamed from tests/auto/styleimports/data/platformSelectors.qml)0
-rw-r--r--tests/auto/styleimports/resources/ResourceStyle/Button.qml9
-rw-r--r--tests/auto/styleimports/resources/ResourceStyle/qmldir (renamed from tests/auto/styleimports/ResourceStyle/qmldir)0
-rw-r--r--tests/auto/styleimports/styleimports.pro7
-rw-r--r--tests/auto/styleimports/tst_styleimports.cpp47
6 files changed, 68 insertions, 6 deletions
diff --git a/tests/auto/styleimports/CMakeLists.txt b/tests/auto/styleimports/CMakeLists.txt
index b5910e92..86db761a 100644
--- a/tests/auto/styleimports/CMakeLists.txt
+++ b/tests/auto/styleimports/CMakeLists.txt
@@ -24,6 +24,7 @@ qt_add_test(tst_styleimports
Qt::GuiPrivate
Qt::QmlPrivate
Qt::QuickControls2
+ Qt::QuickControls2ImplPrivate
Qt::QuickControls2Private
Qt::QuickPrivate
Qt::QuickTemplates2Private
@@ -33,13 +34,19 @@ qt_add_test(tst_styleimports
# Resources:
set(qmake_resourcestyle_resource_files
- "ResourceStyle/Button.qml"
- "ResourceStyle/qmldir"
+ "resources/ResourceStyle/Button.qml"
+ "resources/ResourceStyle/qmldir"
+)
+set(qmake_resourcestyle_resource_files
+ "ResourceStyle/Button.qml" # special case: QTBUG-86726
+ "ResourceStyle/qmldir" # special case
)
qt_add_resource(tst_styleimports "qmake_resourcestyle"
PREFIX
"/"
+ BASE
+ "resources"
FILES
${qmake_resourcestyle_resource_files}
)
diff --git a/tests/auto/styleimports/data/platformSelectors.qml b/tests/auto/styleimports/data/applicationWindowWithButton.qml
index ba6af22c..ba6af22c 100644
--- a/tests/auto/styleimports/data/platformSelectors.qml
+++ b/tests/auto/styleimports/data/applicationWindowWithButton.qml
diff --git a/tests/auto/styleimports/resources/ResourceStyle/Button.qml b/tests/auto/styleimports/resources/ResourceStyle/Button.qml
new file mode 100644
index 00000000..3a97e9de
--- /dev/null
+++ b/tests/auto/styleimports/resources/ResourceStyle/Button.qml
@@ -0,0 +1,9 @@
+import QtQuick.Controls.impl 2.15
+import QtQuick.Templates 2.15 as T
+T.Button {
+ objectName: "ResourceStyle"
+
+ contentItem: IconLabel {
+ color: "salmon"
+ }
+}
diff --git a/tests/auto/styleimports/ResourceStyle/qmldir b/tests/auto/styleimports/resources/ResourceStyle/qmldir
index 4cb1a835..4cb1a835 100644
--- a/tests/auto/styleimports/ResourceStyle/qmldir
+++ b/tests/auto/styleimports/resources/ResourceStyle/qmldir
diff --git a/tests/auto/styleimports/styleimports.pro b/tests/auto/styleimports/styleimports.pro
index 774d93e9..398ce7c2 100644
--- a/tests/auto/styleimports/styleimports.pro
+++ b/tests/auto/styleimports/styleimports.pro
@@ -4,14 +4,15 @@ SOURCES += tst_styleimports.cpp
macos:CONFIG -= app_bundle
-QT += core-private gui-private qml-private quick-private quickcontrols2-private testlib
+QT += core-private gui-private qml-private quick-private quickcontrols2-private quickcontrols2impl-private testlib
include (../shared/util.pri)
resourcestyle.prefix = /
+resourcestyle.base = resources
resourcestyle.files += \
- $$PWD/ResourceStyle/Button.qml \
- $$PWD/ResourceStyle/qmldir
+ $$PWD/resources/ResourceStyle/Button.qml \
+ $$PWD/resources/ResourceStyle/qmldir
RESOURCES += resourcestyle
TESTDATA = data/*
diff --git a/tests/auto/styleimports/tst_styleimports.cpp b/tests/auto/styleimports/tst_styleimports.cpp
index 8b47dee7..fa524098 100644
--- a/tests/auto/styleimports/tst_styleimports.cpp
+++ b/tests/auto/styleimports/tst_styleimports.cpp
@@ -43,6 +43,7 @@
#include <QtQuick/qquickwindow.h>
#include <QtQuickControls2/qquickstyle.h>
#include <QtQuickControls2/private/qquickstyle_p.h>
+#include <QtQuickControls2Impl/private/qquickiconlabel_p.h>
#include "../shared/util.h"
@@ -62,6 +63,9 @@ private slots:
void importStyleWithoutControls_data();
void importStyleWithoutControls();
+
+ void fallbackStyleShouldNotOverwriteTheme_data();
+ void fallbackStyleShouldNotOverwriteTheme();
};
void tst_StyleImports::initTestCase()
@@ -151,6 +155,7 @@ void tst_StyleImports::select()
QQuickStyle::setFallbackStyle(fallback);
QQmlEngine engine;
+ engine.addImportPath(QLatin1String(":/"));
engine.addImportPath(directory());
engine.addImportPath(dataDirectory());
QQmlComponent component(&engine);
@@ -185,7 +190,7 @@ void tst_StyleImports::platformSelectors()
QQmlApplicationEngine engine;
engine.addImportPath(dataDirectory());
- engine.load(testFileUrl("platformSelectors.qml"));
+ engine.load(testFileUrl("applicationWindowWithButton.qml"));
QQuickWindow *window = qobject_cast<QQuickWindow*>(engine.rootObjects().first());
QVERIFY(window);
@@ -241,6 +246,46 @@ void tst_StyleImports::importStyleWithoutControls()
QTRY_VERIFY(success);
}
+void tst_StyleImports::fallbackStyleShouldNotOverwriteTheme_data()
+{
+ QTest::addColumn<QString>("style");
+ QTest::addColumn<QString>("fallbackStyle");
+ QTest::addColumn<QColor>("expectedContentItemColor");
+
+ QTest::addRow("style=Fusion,fallbackStyle=Material")
+ << QString::fromLatin1("Fusion") << QString::fromLatin1("Material") << QColor::fromRgb(0x252525);
+ QTest::addRow("style=ResourceStyle,fallbackStyle=Material")
+ << QString::fromLatin1("ResourceStyle") << QString::fromLatin1("Material") << QColor("salmon");
+}
+
+void tst_StyleImports::fallbackStyleShouldNotOverwriteTheme()
+{
+ QFETCH(QString, style);
+ QFETCH(QString, fallbackStyle);
+ QFETCH(QColor, expectedContentItemColor);
+
+ QQuickStyle::setStyle(style);
+ QQuickStyle::setFallbackStyle(fallbackStyle);
+
+ QQmlApplicationEngine engine;
+ engine.addImportPath(QLatin1String(":/"));
+ engine.addImportPath(dataDirectory());
+ engine.load(testFileUrl("applicationWindowWithButton.qml"));
+ QVERIFY(!engine.rootObjects().isEmpty());
+ QQuickWindow *window = qobject_cast<QQuickWindow*>(engine.rootObjects().first());
+ QVERIFY(window);
+
+ QObject *button = window->property("button").value<QObject*>();
+ QVERIFY(button);
+
+ QQuickIconLabel *contentItem = button->property("contentItem").value<QQuickIconLabel*>();
+ QVERIFY(contentItem);
+
+ // For example: the Fusion style provides Button.qml, so the Button's text color
+ // should be that of QPalette::ButtonText from QQuickFusionTheme.
+ QCOMPARE(contentItem->color(), expectedContentItemColor);
+}
+
QTEST_MAIN(tst_StyleImports)
#include "tst_styleimports.moc"