diff options
34 files changed, 317 insertions, 107 deletions
diff --git a/src/imports/.prev_CMakeLists.txt b/src/imports/.prev_CMakeLists.txt index 473471c2..e6210be9 100644 --- a/src/imports/.prev_CMakeLists.txt +++ b/src/imports/.prev_CMakeLists.txt @@ -4,6 +4,7 @@ add_subdirectory(controls) add_subdirectory(controlsimpl) add_subdirectory(platform) add_subdirectory(templates) +add_subdirectory(nativestyle) add_subdirectory(controls/default) add_subdirectory(controls/default/impl) add_subdirectory(controls/fusion) @@ -14,3 +15,9 @@ add_subdirectory(controls/material) add_subdirectory(controls/material/impl) add_subdirectory(controls/universal) add_subdirectory(controls/universal/impl) +if(MACOS) + add_subdirectory(controls/macos) +endif() +if(WIN32) + add_subdirectory(controls/windows) +endif() diff --git a/src/imports/CMakeLists.txt b/src/imports/CMakeLists.txt index fbd1d1d0..e6210be9 100644 --- a/src/imports/CMakeLists.txt +++ b/src/imports/CMakeLists.txt @@ -15,7 +15,6 @@ add_subdirectory(controls/material) add_subdirectory(controls/material/impl) add_subdirectory(controls/universal) add_subdirectory(controls/universal/impl) - if(MACOS) add_subdirectory(controls/macos) endif() diff --git a/src/imports/controls/.prev_CMakeLists.txt b/src/imports/controls/.prev_CMakeLists.txt index ca2ddb43..b927521b 100644 --- a/src/imports/controls/.prev_CMakeLists.txt +++ b/src/imports/controls/.prev_CMakeLists.txt @@ -9,8 +9,6 @@ qt_add_qml_module(qtquickcontrols2plugin VERSION "${CMAKE_PROJECT_VERSION}" DESIGNER_SUPPORTED CLASSNAME QtQuickControls2Plugin - DEPENDENCIES - QtQuick.Templates/2.5 SKIP_TYPE_REGISTRATION IMPORTS QtQuick.Controls.impl/auto diff --git a/src/imports/controls/CMakeLists.txt b/src/imports/controls/CMakeLists.txt index 4e48373e..8a7f6cfd 100644 --- a/src/imports/controls/CMakeLists.txt +++ b/src/imports/controls/CMakeLists.txt @@ -10,8 +10,6 @@ qt_add_qml_module(qtquickcontrols2plugin VERSION "6.0" # special case DESIGNER_SUPPORTED CLASSNAME QtQuickControls2Plugin - DEPENDENCIES - QtQuick.Templates/2.5 SKIP_TYPE_REGISTRATION IMPORTS QtQuick.Controls.impl/auto diff --git a/src/imports/controls/default/.prev_CMakeLists.txt b/src/imports/controls/default/.prev_CMakeLists.txt index 608f81b6..9a37f29c 100644 --- a/src/imports/controls/default/.prev_CMakeLists.txt +++ b/src/imports/controls/default/.prev_CMakeLists.txt @@ -8,8 +8,6 @@ qt_add_qml_module(qtquickcontrols2defaultstyleplugin URI "QtQuick.Controls.Default" VERSION "${CMAKE_PROJECT_VERSION}" CLASSNAME QtQuickControls2DefaultStylePlugin - DEPENDENCIES - QtQuick.Controls/2.5 GENERATE_QMLTYPES SOURCES qquickdefaultstyle.cpp qquickdefaultstyle_p.h diff --git a/src/imports/controls/default/CMakeLists.txt b/src/imports/controls/default/CMakeLists.txt index 336d04c9..f7ce5d10 100644 --- a/src/imports/controls/default/CMakeLists.txt +++ b/src/imports/controls/default/CMakeLists.txt @@ -8,8 +8,6 @@ qt_add_qml_module(qtquickcontrols2defaultstyleplugin URI "QtQuick.Controls.Default" VERSION "6.0" # special case CLASSNAME QtQuickControls2DefaultStylePlugin - DEPENDENCIES - QtQuick.Controls/2.5 GENERATE_QMLTYPES SOURCES qquickdefaultstyle.cpp qquickdefaultstyle_p.h diff --git a/src/imports/controls/default/impl/CMakeLists.txt b/src/imports/controls/default/impl/CMakeLists.txt index d90ef86b..e6258d13 100644 --- a/src/imports/controls/default/impl/CMakeLists.txt +++ b/src/imports/controls/default/impl/CMakeLists.txt @@ -8,9 +8,6 @@ qt_add_qml_module(qtquickcontrols2defaultstyleimplplugin URI "QtQuick.Controls.Default.impl" VERSION "${CMAKE_PROJECT_VERSION}" CLASSNAME QtQuickControls2DefaultStyleImplPlugin - DEPENDENCIES - QtQuick.Templates/6.0 - QtQuick.Controls/6.0 SKIP_TYPE_REGISTRATION GENERATE_QMLTYPES SOURCES diff --git a/src/imports/controls/default/qtquickcontrols2defaultstyleplugin.cpp b/src/imports/controls/default/qtquickcontrols2defaultstyleplugin.cpp index 6b4b3bc3..c7259a29 100644 --- a/src/imports/controls/default/qtquickcontrols2defaultstyleplugin.cpp +++ b/src/imports/controls/default/qtquickcontrols2defaultstyleplugin.cpp @@ -51,8 +51,7 @@ public: QtQuickControls2DefaultStylePlugin(QObject *parent = nullptr); QString name() const override; - - void registerTypes(const char *uri) override; + void initializeTheme(QQuickTheme *theme) override; QQuickDefaultTheme theme; }; @@ -66,14 +65,9 @@ QString QtQuickControls2DefaultStylePlugin::name() const return QStringLiteral("Default"); } -void QtQuickControls2DefaultStylePlugin::registerTypes(const char *uri) +void QtQuickControls2DefaultStylePlugin::initializeTheme(QQuickTheme *theme) { - QQuickStylePlugin::registerTypes(uri); - - if (!QQuickTheme::instance()) - return; - - theme.initialize(QQuickTheme::instance()); + this->theme.initialize(theme); } QT_END_NAMESPACE diff --git a/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp b/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp index 59d99afc..fcaa959e 100644 --- a/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp +++ b/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp @@ -52,8 +52,7 @@ public: QtQuickControls2FusionStylePlugin(QObject *parent = nullptr); QString name() const override; - - void registerTypes(const char *uri) override; + void initializeTheme(QQuickTheme *theme) override; QQuickFusionTheme theme; }; @@ -67,14 +66,9 @@ QString QtQuickControls2FusionStylePlugin::name() const return QStringLiteral("Fusion"); } -void QtQuickControls2FusionStylePlugin::registerTypes(const char *uri) +void QtQuickControls2FusionStylePlugin::initializeTheme(QQuickTheme *theme) { - QQuickStylePlugin::registerTypes(uri); - - if (!QQuickTheme::instance()) - return; - - theme.initialize(QQuickTheme::instance()); + this->theme.initialize(theme); } QT_END_NAMESPACE diff --git a/src/imports/controls/imagine/impl/CMakeLists.txt b/src/imports/controls/imagine/impl/CMakeLists.txt index a2e38302..ea75184a 100644 --- a/src/imports/controls/imagine/impl/CMakeLists.txt +++ b/src/imports/controls/imagine/impl/CMakeLists.txt @@ -58,7 +58,7 @@ set(qml_files "OpacityMask.qml" ) set_source_files_properties(OpacityMask.qml PROPERTIES - QT_QML_SOURCE_VERSION "2.0" + QT_QML_SOURCE_VERSION "6.0" ) qt6_target_qml_files(qtquickcontrols2imaginestyleimplplugin diff --git a/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp b/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp index 336064dd..16c3f0d7 100644 --- a/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp +++ b/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp @@ -53,8 +53,7 @@ public: QtQuickControls2ImagineStylePlugin(QObject *parent = nullptr); QString name() const override; - - void registerTypes(const char *uri) override; + void initializeTheme(QQuickTheme *theme) override; QQuickImagineTheme theme; }; @@ -68,14 +67,9 @@ QString QtQuickControls2ImagineStylePlugin::name() const return QStringLiteral("Imagine"); } -void QtQuickControls2ImagineStylePlugin::registerTypes(const char *uri) +void QtQuickControls2ImagineStylePlugin::initializeTheme(QQuickTheme *theme) { - QQuickStylePlugin::registerTypes(uri); - - if (!QQuickTheme::instance()) - return; - - theme.initialize(QQuickTheme::instance()); + this->theme.initialize(theme); } QT_END_NAMESPACE diff --git a/src/imports/controls/macos/.prev_CMakeLists.txt b/src/imports/controls/macos/.prev_CMakeLists.txt new file mode 100644 index 00000000..a8fca854 --- /dev/null +++ b/src/imports/controls/macos/.prev_CMakeLists.txt @@ -0,0 +1,100 @@ +# Generated from macos.pro. + +##################################################################### +## qtquickcontrols2macosstyleplugin Plugin: +##################################################################### + +qt_add_qml_module(qtquickcontrols2macosstyleplugin + URI "QtQuick.Controls.macOS" + VERSION "${CMAKE_PROJECT_VERSION}" + CLASSNAME QtQuickControls2MacOSStylePlugin + IMPORTS + QtQuick.Controls.Fusion/auto + GENERATE_QMLTYPES + SOURCES + qtquickcontrols2macosstyleplugin.cpp + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_TO_ASCII + LIBRARIES + Qt::CorePrivate + Qt::GuiPrivate + Qt::QmlPrivate + Qt::QuickControls2Private + Qt::QuickPrivate + Qt::QuickTemplates2Private + PUBLIC_LIBRARIES + Qt::Core + Qt::Gui + Qt::Qml + Qt::Quick + Qt::QuickControls2 + Qt::QuickTemplates2 +) + +#### Keys ignored in scope 1:.:.:macos.pro:<TRUE>: +# OTHER_FILES = "qmldir" "$$QML_FILES" +# QML_IMPORT_NAME = "QtQuick.Controls.macOS" +# QML_IMPORT_VERSION = "$$QT_VERSION" +# TARGETPATH = "QtQuick/Controls/macOS" +# _REQUIREMENTS = "qtConfig(quickcontrols2-macos)" + +set(qml_files + "Button.qml" + "Slider.qml" + "GroupBox.qml" + "CheckBox.qml" + "RadioButton.qml" + "SpinBox.qml" + "TextField.qml" + "Frame.qml" + "TextArea.qml" + "ComboBox.qml" + "ScrollBar.qml" + "ProgressBar.qml" + "Dial.qml" +) +set_source_files_properties(Button.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(Slider.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(GroupBox.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(CheckBox.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(RadioButton.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(SpinBox.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(TextField.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(Frame.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(TextArea.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(ComboBox.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(ScrollBar.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(ProgressBar.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(Dial.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) + +qt6_target_qml_files(qtquickcontrols2macosstyleplugin + FILES + ${qml_files} +) diff --git a/src/imports/controls/macos/qtquickcontrols2macosstyleplugin.cpp b/src/imports/controls/macos/qtquickcontrols2macosstyleplugin.cpp index a6a26b89..f97414ce 100644 --- a/src/imports/controls/macos/qtquickcontrols2macosstyleplugin.cpp +++ b/src/imports/controls/macos/qtquickcontrols2macosstyleplugin.cpp @@ -46,8 +46,8 @@ class QtQuickControls2MacOSStylePlugin : public QQuickStylePlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: - void registerTypes(const char *uri) override; QString name() const override; + void initializeTheme(QQuickTheme *theme) override; }; QString QtQuickControls2MacOSStylePlugin::name() const @@ -55,9 +55,8 @@ QString QtQuickControls2MacOSStylePlugin::name() const return QStringLiteral("macOS"); } -void QtQuickControls2MacOSStylePlugin::registerTypes(const char *uri) +void QtQuickControls2MacOSStylePlugin::initializeTheme(QQuickTheme */*theme*/) { - QQuickStylePlugin::registerTypes(uri); } QT_END_NAMESPACE diff --git a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp index 47e7e877..095dd6d7 100644 --- a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp +++ b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp @@ -52,8 +52,7 @@ public: QtQuickControls2MaterialStylePlugin(QObject *parent = nullptr); QString name() const override; - - void registerTypes(const char *uri) override; + void initializeTheme(QQuickTheme *theme) override; QQuickMaterialTheme theme; }; @@ -67,15 +66,10 @@ QString QtQuickControls2MaterialStylePlugin::name() const return QStringLiteral("Material"); } -void QtQuickControls2MaterialStylePlugin::registerTypes(const char *uri) +void QtQuickControls2MaterialStylePlugin::initializeTheme(QQuickTheme *theme) { - QQuickStylePlugin::registerTypes(uri); - - if (!QQuickTheme::instance()) - return; - QQuickMaterialStyle::initGlobals(); - theme.initialize(QQuickTheme::instance()); + this->theme.initialize(theme); } QT_END_NAMESPACE diff --git a/src/imports/controls/qtquickcontrols2plugin.cpp b/src/imports/controls/qtquickcontrols2plugin.cpp index 47263570..85c51e4f 100644 --- a/src/imports/controls/qtquickcontrols2plugin.cpp +++ b/src/imports/controls/qtquickcontrols2plugin.cpp @@ -34,20 +34,14 @@ ** ****************************************************************************/ -#include <QtCore/qdir.h> -#include <QtCore/qfile.h> -#include <QtCore/qfileinfo.h> -#include <QtCore/qloggingcategory.h> -#include <QtCore/qpluginloader.h> #include <QtCore/private/qfileselector_p.h> -#include <QtQml/qqmlfile.h> -#include <QtQml/qqmlextensionplugin.h> +#include <QtCore/qloggingcategory.h> #include <QtQml/qqmlengine.h> -#include <QtQml/private/qqmldirparser_p.h> -#include <QtQuickControls2/qquickstyle.h> +#include <QtQml/qqmlextensionplugin.h> +#include <QtQuickTemplates2/private/qquicktheme_p_p.h> #include <QtQuickControls2/private/qquickstyle_p.h> #include <QtQuickControls2/private/qquickstyleplugin_p.h> -#include <QtQuickTemplates2/private/qquicktheme_p_p.h> +#include <QtQuickControls2/qquickstyle.h> QT_BEGIN_NAMESPACE @@ -134,7 +128,7 @@ void QtQuickControls2Plugin::registerTypes(const char *uri) if (styleName != fallbackStyleName && styleName != QLatin1String("Default")) { registeredFallbackStyleUri = ::fallbackStyleUri(); qCDebug(lcQtQuickControlsStylePlugin) << "calling qmlRegisterModuleImport() to register fallback style with" - << "uri \"" << qtQuickControlsUri << "\" moduleMajor" << QQmlModuleImportModuleAny + << " uri \"" << qtQuickControlsUri << "\" moduleMajor" << QQmlModuleImportModuleAny << "import" << registeredFallbackStyleUri << "importMajor" << QQmlModuleImportAuto; // The fallback style must be a built-in style, so we match the version number. qmlRegisterModuleImport(qtQuickControlsUri, QQmlModuleImportModuleAny, registeredFallbackStyleUri.toUtf8().constData(), @@ -174,7 +168,6 @@ void QtQuickControls2Plugin::unregisterTypes() registeredStyleUri.clear(); QQuickThemePrivate::instance.reset(); - QQuickStylePrivate::reset(); } diff --git a/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp b/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp index 539738dd..01074432 100644 --- a/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp +++ b/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp @@ -51,8 +51,7 @@ public: QtQuickControls2UniversalStylePlugin(QObject *parent = nullptr); QString name() const override; - - void registerTypes(const char *uri) override; + void initializeTheme(QQuickTheme *theme) override; QQuickUniversalTheme theme; }; @@ -66,15 +65,10 @@ QString QtQuickControls2UniversalStylePlugin::name() const return QStringLiteral("Universal"); } -void QtQuickControls2UniversalStylePlugin::registerTypes(const char *uri) +void QtQuickControls2UniversalStylePlugin::initializeTheme(QQuickTheme *theme) { - QQuickStylePlugin::registerTypes(uri); - - if (!QQuickTheme::instance()) - return; - QQuickUniversalStyle::initGlobals(); - theme.initialize(QQuickTheme::instance()); + this->theme.initialize(theme); } QT_END_NAMESPACE diff --git a/src/imports/controls/windows/.prev_CMakeLists.txt b/src/imports/controls/windows/.prev_CMakeLists.txt new file mode 100644 index 00000000..d68839b2 --- /dev/null +++ b/src/imports/controls/windows/.prev_CMakeLists.txt @@ -0,0 +1,92 @@ +# Generated from windows.pro. + +##################################################################### +## qtquickcontrols2windowsstyleplugin Plugin: +##################################################################### + +qt_add_qml_module(qtquickcontrols2windowsstyleplugin + URI "QtQuick.Controls.Windows" + VERSION "${CMAKE_PROJECT_VERSION}" + CLASSNAME QtQuickControls2WindowsStylePlugin + IMPORTS + QtQuick.Controls.Fusion/auto + GENERATE_QMLTYPES + SOURCES + qtquickcontrols2windowsstyleplugin.cpp + DEFINES + QT_NO_CAST_FROM_ASCII + QT_NO_CAST_TO_ASCII + LIBRARIES + Qt::CorePrivate + Qt::GuiPrivate + Qt::QmlPrivate + Qt::QuickControls2Private + Qt::QuickPrivate + Qt::QuickTemplates2Private + PUBLIC_LIBRARIES + Qt::Core + Qt::Gui + Qt::Qml + Qt::Quick + Qt::QuickControls2 + Qt::QuickTemplates2 +) + +#### Keys ignored in scope 1:.:.:windows.pro:<TRUE>: +# OTHER_FILES = "qmldir" "$$QML_FILES" +# QML_IMPORT_NAME = "QtQuick.Controls.Windows" +# QML_IMPORT_VERSION = "$$QT_VERSION" +# TARGETPATH = "QtQuick/Controls/Windows" +# _REQUIREMENTS = "qtConfig(quickcontrols2-windows)" + +set(qml_files + "Button.qml" + "CheckBox.qml" + "ComboBox.qml" + "Frame.qml" + "GroupBox.qml" + "ProgressBar.qml" + "RadioButton.qml" + "Slider.qml" + "SpinBox.qml" + "TextArea.qml" + "TextField.qml" +) +set_source_files_properties(Button.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(CheckBox.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(ComboBox.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(Frame.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(GroupBox.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(ProgressBar.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(RadioButton.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(Slider.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(SpinBox.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(TextArea.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) +set_source_files_properties(TextField.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) + +qt6_target_qml_files(qtquickcontrols2windowsstyleplugin + FILES + ${qml_files} +) diff --git a/src/imports/controls/windows/CMakeLists.txt b/src/imports/controls/windows/CMakeLists.txt index 749d19a2..6bcbc26c 100644 --- a/src/imports/controls/windows/CMakeLists.txt +++ b/src/imports/controls/windows/CMakeLists.txt @@ -45,6 +45,7 @@ set(qml_files "ComboBox.qml" "Frame.qml" "GroupBox.qml" + "ProgressBar.qml" "RadioButton.qml" "Slider.qml" "SpinBox.qml" @@ -66,6 +67,9 @@ set_source_files_properties(Frame.qml PROPERTIES set_source_files_properties(GroupBox.qml PROPERTIES QT_QML_SOURCE_VERSION "6.0" ) +set_source_files_properties(ProgressBar.qml PROPERTIES + QT_QML_SOURCE_VERSION "6.0" +) set_source_files_properties(RadioButton.qml PROPERTIES QT_QML_SOURCE_VERSION "6.0" ) diff --git a/src/imports/controls/windows/qtquickcontrols2windowsstyleplugin.cpp b/src/imports/controls/windows/qtquickcontrols2windowsstyleplugin.cpp index 9c50f4fb..1136cd9a 100644 --- a/src/imports/controls/windows/qtquickcontrols2windowsstyleplugin.cpp +++ b/src/imports/controls/windows/qtquickcontrols2windowsstyleplugin.cpp @@ -46,8 +46,8 @@ class QtQuickControls2WindowsStylePlugin : public QQuickStylePlugin Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid) public: - void registerTypes(const char *uri) override; QString name() const override; + void initializeTheme(QQuickTheme *theme) override; }; QString QtQuickControls2WindowsStylePlugin::name() const @@ -55,9 +55,8 @@ QString QtQuickControls2WindowsStylePlugin::name() const return QStringLiteral("Windows"); } -void QtQuickControls2WindowsStylePlugin::registerTypes(const char *uri) +void QtQuickControls2WindowsStylePlugin::initializeTheme(QQuickTheme */*theme*/) { - QQuickStylePlugin::registerTypes(uri); } QT_END_NAMESPACE diff --git a/src/imports/controlsimpl/.prev_CMakeLists.txt b/src/imports/controlsimpl/.prev_CMakeLists.txt index 58f7ad8c..ec51260d 100644 --- a/src/imports/controlsimpl/.prev_CMakeLists.txt +++ b/src/imports/controlsimpl/.prev_CMakeLists.txt @@ -8,8 +8,6 @@ qt_add_qml_module(qtquickcontrols2implplugin URI "QtQuick.Controls.impl" VERSION "${CMAKE_PROJECT_VERSION}" CLASSNAME QtQuickControls2ImplPlugin - DEPENDENCIES - QtQuick.Templates/2.5 SKIP_TYPE_REGISTRATION SOURCES qtquickcontrols2implplugin.cpp diff --git a/src/imports/controlsimpl/CMakeLists.txt b/src/imports/controlsimpl/CMakeLists.txt index 7b65cccb..86966168 100644 --- a/src/imports/controlsimpl/CMakeLists.txt +++ b/src/imports/controlsimpl/CMakeLists.txt @@ -8,8 +8,6 @@ qt_add_qml_module(qtquickcontrols2implplugin URI "QtQuick.Controls.impl" VERSION "6.0" # special case CLASSNAME QtQuickControls2ImplPlugin - DEPENDENCIES - QtQuick.Templates/2.5 SKIP_TYPE_REGISTRATION SOURCES qtquickcontrols2implplugin.cpp diff --git a/src/imports/nativestyle/qtquickcontrols2nativestyleplugin.cpp b/src/imports/nativestyle/qtquickcontrols2nativestyleplugin.cpp index d6e77d5f..ef8bfb9f 100644 --- a/src/imports/nativestyle/qtquickcontrols2nativestyleplugin.cpp +++ b/src/imports/nativestyle/qtquickcontrols2nativestyleplugin.cpp @@ -62,7 +62,7 @@ public: ~QtQuickControls2NativeStylePlugin() override; void initializeEngine(QQmlEngine *engine, const char *uri) override; - void registerTypes(const char *uri) override; + void initializeTheme(QQuickTheme *theme) override; QString name() const override; }; @@ -136,14 +136,8 @@ void QtQuickControls2NativeStylePlugin::initializeEngine(QQmlEngine *engine, con QQuickNativeStyle::setStyle(style); } -void QtQuickControls2NativeStylePlugin::registerTypes(const char *uri) +void QtQuickControls2NativeStylePlugin::initializeTheme(QQuickTheme */*theme*/) { - Q_UNUSED(uri); - if (!QQuickTheme::instance()) - return; - - QQuickTheme::instance()->setPalette(QQuickTheme::System, QPalette()); - QQuickTheme::instance()->setFont(QQuickTheme::System, QFont()); } QT_END_NAMESPACE diff --git a/src/imports/templates/.prev_CMakeLists.txt b/src/imports/templates/.prev_CMakeLists.txt index 178906d7..948a4327 100644 --- a/src/imports/templates/.prev_CMakeLists.txt +++ b/src/imports/templates/.prev_CMakeLists.txt @@ -8,8 +8,6 @@ qt_add_qml_module(qtquicktemplates2plugin URI "QtQuick.Templates" VERSION "${CMAKE_PROJECT_VERSION}" CLASSNAME QtQuickTemplates2Plugin - DEPENDENCIES - QtQuick.Window/2.2 SKIP_TYPE_REGISTRATION SOURCES qtquicktemplates2plugin.cpp diff --git a/src/imports/templates/CMakeLists.txt b/src/imports/templates/CMakeLists.txt index f37f69a8..4c250cae 100644 --- a/src/imports/templates/CMakeLists.txt +++ b/src/imports/templates/CMakeLists.txt @@ -8,8 +8,6 @@ qt_add_qml_module(qtquicktemplates2plugin URI "QtQuick.Templates" VERSION "6.0" # special case CLASSNAME QtQuickTemplates2Plugin - DEPENDENCIES - QtQuick.Window/2.2 SKIP_TYPE_REGISTRATION SOURCES qtquicktemplates2plugin.cpp diff --git a/src/quickcontrols2/qquickstyle.cpp b/src/quickcontrols2/qquickstyle.cpp index fd81d1dd..ec0b5e48 100644 --- a/src/quickcontrols2/qquickstyle.cpp +++ b/src/quickcontrols2/qquickstyle.cpp @@ -142,6 +142,9 @@ struct QQuickStyleSpec void setFallbackStyle(const QString &fallback, const QByteArray &method) { + if (!fallback.isEmpty()) + qCDebug(lcQtQuickControlsStyle) << "fallback style" << fallback << "set on QQuickStyleSpec via" << method; + fallbackStyle = fallback; fallbackMethod = method; } diff --git a/src/quickcontrols2/qquickstyleplugin.cpp b/src/quickcontrols2/qquickstyleplugin.cpp index 657b31fc..f211d4b0 100644 --- a/src/quickcontrols2/qquickstyleplugin.cpp +++ b/src/quickcontrols2/qquickstyleplugin.cpp @@ -41,7 +41,6 @@ #include <QtCore/qloggingcategory.h> #include <QtQml/qqmlengine.h> #include <QtQml/qqmlfile.h> - #include <QtQuickTemplates2/private/qquicktheme_p_p.h> QT_BEGIN_NAMESPACE @@ -57,17 +56,24 @@ QQuickStylePlugin::~QQuickStylePlugin() { } -QString QQuickStylePlugin::name() const -{ - return QString(); -} - void QQuickStylePlugin::registerTypes(const char *uri) { qCDebug(lcStylePlugin).nospace() << "registerTypes called with uri " << uri << "; plugin name is " << name(); - if (!QQuickTheme::instance()) + auto theme = QQuickTheme::instance(); + if (!theme) { qWarning() << "QtQuick.Controls must be imported before importing" << baseUrl().toString(); + return; + } + + if (name() != QQuickStyle::name()) { + qCDebug(lcStylePlugin).nospace() << "theme does not belong to current style (" + << QQuickStyle::name() << "); not calling initializeTheme()"; + return; + } + + qCDebug(lcStylePlugin) << "theme has not been initialized; calling initializeTheme()"; + initializeTheme(theme); } void QQuickStylePlugin::unregisterTypes() diff --git a/src/quickcontrols2/qquickstyleplugin_p.h b/src/quickcontrols2/qquickstyleplugin_p.h index 37d070db..1a941aa7 100644 --- a/src/quickcontrols2/qquickstyleplugin_p.h +++ b/src/quickcontrols2/qquickstyleplugin_p.h @@ -63,7 +63,8 @@ public: explicit QQuickStylePlugin(QObject *parent = nullptr); ~QQuickStylePlugin(); - virtual QString name() const; + virtual QString name() const = 0; + virtual void initializeTheme(QQuickTheme *theme) = 0; void registerTypes(const char *uri) override; void unregisterTypes() override; 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" diff --git a/tests/manual/nativestyle/main.cpp b/tests/manual/nativestyle/main.cpp index 536625fb..4925efa8 100644 --- a/tests/manual/nativestyle/main.cpp +++ b/tests/manual/nativestyle/main.cpp @@ -55,7 +55,7 @@ int main(int argc, char *argv[]) #elif defined(Q_OS_WINDOWS) QQuickStyle::setStyle("Windows"); #else - QQuickStyle::setStyle("FusionDesktop"); + QQuickStyle::setStyle("Fusion"); #endif QQmlApplicationEngine engine; |