diff options
Diffstat (limited to 'src/quickcontrols2/qquickstyleplugin.cpp')
-rw-r--r-- | src/quickcontrols2/qquickstyleplugin.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/quickcontrols2/qquickstyleplugin.cpp b/src/quickcontrols2/qquickstyleplugin.cpp index 7f54c033..0795eed4 100644 --- a/src/quickcontrols2/qquickstyleplugin.cpp +++ b/src/quickcontrols2/qquickstyleplugin.cpp @@ -37,6 +37,7 @@ #include "qquickstyleplugin_p.h" #include "qquickstyle.h" #include "qquickstyle_p.h" +#include "qquickstyleselector_p.h" #include <QtCore/qmetaobject.h> #include <QtCore/qsettings.h> @@ -184,20 +185,25 @@ QQuickTheme *QQuickStylePlugin::createTheme() const return nullptr; } -/* - Returns either a file system path if Qt was built as shared libraries, - or a QRC path if Qt was built statically. -*/ -QUrl QQuickStylePlugin::typeUrl(const QString &name) const +QUrl QQuickStylePlugin::resolvedUrl(const QString &fileName) const { -#ifdef QT_STATIC - QString url = QLatin1String("qrc") + baseUrl().path(); -#else - QString url = baseUrl().toString(); -#endif - if (!name.isEmpty()) - url += QLatin1Char('/') + name; - return QUrl(url); + if (!m_selector) { + m_selector.reset(new QQuickStyleSelector); + const QString style = QQuickStyle::name(); + if (!style.isEmpty()) + m_selector->addSelector(style); + + const QString fallback = QQuickStylePrivate::fallbackStyle(); + if (!fallback.isEmpty() && fallback != style) + m_selector->addSelector(fallback); + + const QString theme = name(); + if (!theme.isEmpty() && theme != style) + m_selector->addSelector(theme); + + m_selector->setPaths(QQuickStylePrivate::stylePaths(true)); + } + return m_selector->select(fileName); } QT_END_NAMESPACE |