From a9436b597916d5619cbbbbd103bc482ddaf4359a Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Fri, 7 Dec 2018 14:26:07 +0100 Subject: Static: Register the base style qml files so they can be found If the files are not registered then it will look for them on the disk instead because it has no entry for them. This changed at some point in the Qt 5.12.0 release but has technically been wrong for some time as they should always be registered. Change-Id: I8246a4f5fb4d94ebc5f7ca262d1821a409eb6c9f Fixes: QTBUG-72338 Reviewed-by: Mitch Curtis --- src/controls/Styles/styles.pri | 1 + src/controls/controls.pro | 1 + src/controls/plugin.cpp | 49 ++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/controls/Styles/styles.pri b/src/controls/Styles/styles.pri index ff3db817..c29cebfd 100644 --- a/src/controls/Styles/styles.pri +++ b/src/controls/Styles/styles.pri @@ -109,5 +109,6 @@ STYLES_QML_FILES += \ $$PWD/Base/images/needle.png AUX_QML_FILES += $$PWD/qmldir +static: QML_FILES += $$AUX_QML_FILES ios:static: include(iOS/iOS.pri) !qtquickcompiler|static: QML_FILES += $$STYLES_QML_FILES diff --git a/src/controls/controls.pro b/src/controls/controls.pro index 75871bf0..3119d33d 100644 --- a/src/controls/controls.pro +++ b/src/controls/controls.pro @@ -45,6 +45,7 @@ qtquickcompiler { } else { QML_FILES += $$CONTROLS_QML_FILES !static: CONFIG += qmlcache + else: CONTROLS_QML_FILES += qmldir } SOURCES += $$PWD/plugin.cpp diff --git a/src/controls/plugin.cpp b/src/controls/plugin.cpp index 8aca0c49..82eef800 100644 --- a/src/controls/plugin.cpp +++ b/src/controls/plugin.cpp @@ -73,10 +73,12 @@ QT_BEGIN_NAMESPACE -static const struct { +struct QmldirStruct { const char *type; int major, minor; -} qmldir [] = { +}; + +static const QmldirStruct qmldir [] = { { "ApplicationWindow", 1, 0 }, { "Button", 1, 0 }, { "Calendar", 1, 2 }, @@ -119,6 +121,43 @@ static const struct { { "Slider", 1, 6 } }; +static const QmldirStruct stylesQmldir [] = { + { "ApplicationWindowStyle", 1, 3 }, + { "ButtonStyle", 1, 0 }, + { "BusyIndicatorStyle", 1, 1 }, + { "CalendarStyle", 1, 1 }, + { "CheckBoxStyle", 1, 0 }, + { "ComboBoxStyle", 1, 0 }, + { "MenuStyle", 1, 2 }, + { "MenuBarStyle", 1, 2 }, + { "ProgressBarStyle", 1, 0 }, + { "RadioButtonStyle", 1, 0 }, + { "ScrollViewStyle", 1, 0 }, + { "SliderStyle", 1, 0 }, + { "SpinBoxStyle", 1, 1 }, + { "SwitchStyle", 1, 1 }, + { "TabViewStyle", 1, 0 }, + { "TableViewStyle", 1, 0 }, + { "TreeViewStyle", 1, 4 }, + { "TextAreaStyle", 1, 1 }, + { "TextFieldStyle", 1, 0 }, + { "ToolBarStyle", 1, 0 }, + { "StatusBarStyle", 1, 0 }, + { "CircularGaugeStyle", 1, 0 }, + { "CircularButtonStyle", 1, 0 }, + { "CircularTickmarkLabelStyle", 1, 0 }, + { "CommonStyleHelper", 1, 0 }, + { "DelayButtonStyle", 1, 0 }, + { "DialStyle", 1, 1 }, + { "GaugeStyle", 1, 0 }, + { "HandleStyle", 1, 0 }, + { "HandleStyleHelper", 1, 0 }, + { "PieMenuStyle", 1, 3 }, + { "StatusIndicatorStyle", 1, 1 }, + { "ToggleButtonStyle", 1, 0 }, + { "TumblerStyle", 1, 2 } +}; + QtQuickControls1Plugin::QtQuickControls1Plugin(QObject *parent) : QQmlExtensionPlugin(parent) { } @@ -172,6 +211,12 @@ void QtQuickControls1Plugin::registerTypes(const char *uri) #ifdef QT_WIDGETS_LIB qmlRegisterType(private_uri, 1, 0, "StyleItem"); #endif + + const char *styles_uri = "QtQuick.Controls.Styles"; + const QString baseStyleLocation = filesLocation + "/Styles/Base"; + for (int i = 0; i < int(sizeof(stylesQmldir)/sizeof(stylesQmldir[0])); i++) + qmlRegisterType(QUrl(baseStyleLocation + "/" + stylesQmldir[i].type + ".qml"), styles_uri, + stylesQmldir[i].major, stylesQmldir[i].minor, stylesQmldir[i].type); } void QtQuickControls1Plugin::initializeEngine(QQmlEngine *engine, const char *uri) -- cgit v1.2.1