aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/imports/controls/qtquickcontrols2plugin.cpp7
-rw-r--r--tests/auto/qquickstyle/tst_qquickstyle.cpp36
2 files changed, 34 insertions, 9 deletions
diff --git a/src/imports/controls/qtquickcontrols2plugin.cpp b/src/imports/controls/qtquickcontrols2plugin.cpp
index d04d3018..76086376 100644
--- a/src/imports/controls/qtquickcontrols2plugin.cpp
+++ b/src/imports/controls/qtquickcontrols2plugin.cpp
@@ -77,6 +77,8 @@ class QtQuickControls2Plugin: public QQuickStylePlugin
public:
QtQuickControls2Plugin(QObject *parent = nullptr);
+ ~QtQuickControls2Plugin();
+
void registerTypes(const char *uri) override;
QString name() const override;
@@ -88,6 +90,11 @@ QtQuickControls2Plugin::QtQuickControls2Plugin(QObject *parent) : QQuickStylePlu
initResources();
}
+QtQuickControls2Plugin::~QtQuickControls2Plugin()
+{
+ QQuickStylePrivate::reset();
+}
+
void QtQuickControls2Plugin::registerTypes(const char *uri)
{
QQuickStylePrivate::init(typeUrl());
diff --git a/tests/auto/qquickstyle/tst_qquickstyle.cpp b/tests/auto/qquickstyle/tst_qquickstyle.cpp
index 1ce2a034..9de947a6 100644
--- a/tests/auto/qquickstyle/tst_qquickstyle.cpp
+++ b/tests/auto/qquickstyle/tst_qquickstyle.cpp
@@ -46,21 +46,41 @@ class tst_QQuickStyle : public QObject
Q_OBJECT
private slots:
- void init();
+ void cleanup();
void lookup();
void commandLineArgument();
void environmentVariables();
void availableStyles();
+
+private:
+ void loadControls();
+ void unloadControls();
};
-void tst_QQuickStyle::init()
+void tst_QQuickStyle::cleanup()
{
- QQuickStylePrivate::reset();
+ unloadControls();
+
QGuiApplicationPrivate::styleOverride.clear();
qunsetenv("QT_QUICK_CONTROLS_STYLE");
qunsetenv("QT_QUICK_CONTROLS_FALLBACK_STYLE");
}
+void tst_QQuickStyle::loadControls()
+{
+ QQmlEngine engine;
+ QQmlComponent component(&engine);
+ component.setData("import QtQuick 2.0; import QtQuick.Controls 2.1; Control { }", QUrl());
+
+ QScopedPointer<QObject> object(component.create());
+ QVERIFY2(!object.isNull(), qPrintable(component.errorString()));
+}
+
+void tst_QQuickStyle::unloadControls()
+{
+ qmlClearTypeRegistrations();
+}
+
void tst_QQuickStyle::lookup()
{
QVERIFY(QQuickStyle::name().isEmpty());
@@ -70,12 +90,7 @@ void tst_QQuickStyle::lookup()
QCOMPARE(QQuickStyle::name(), QString("Material"));
QVERIFY(!QQuickStyle::path().isEmpty());
- QQmlEngine engine;
- QQmlComponent component(&engine);
- component.setData("import QtQuick 2.0; import QtQuick.Controls 2.1; Control { }", QUrl());
-
- QScopedPointer<QObject> object(component.create());
- QVERIFY(!object.isNull());
+ loadControls();
QCOMPARE(QQuickStyle::name(), QString("Material"));
QVERIFY(!QQuickStyle::path().isEmpty());
@@ -84,6 +99,9 @@ void tst_QQuickStyle::lookup()
void tst_QQuickStyle::commandLineArgument()
{
QGuiApplicationPrivate::styleOverride = "CmdLineArgStyle";
+
+ loadControls();
+
QCOMPARE(QQuickStyle::name(), QString("CmdLineArgStyle"));
}