diff --git a/src/plugins/platformthemes/xdgdesktopportal/main.cpp b/src/plugins/platformthemes/xdgdesktopportal/main.cpp index efbc16b3d2e..3ebba0425b3 100644 --- a/src/plugins/platformthemes/xdgdesktopportal/main.cpp +++ b/src/plugins/platformthemes/xdgdesktopportal/main.cpp @@ -20,12 +20,7 @@ public: QPlatformTheme *QXdgDesktopPortalThemePlugin::create(const QString &key, const QStringList ¶ms) { Q_UNUSED(params); - if (!key.compare("xdgdesktopportal"_L1, Qt::CaseInsensitive) || - !key.compare("flatpak"_L1, Qt::CaseInsensitive) || - !key.compare("snap"_L1, Qt::CaseInsensitive)) - return new QXdgDesktopPortalTheme; - - return nullptr; + return QXdgDesktopPortalTheme::isXdgPlugin(key) ? new QXdgDesktopPortalTheme : nullptr; } QT_END_NAMESPACE diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp index 355d3e6cc9a..58b613baeb2 100644 --- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp +++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp @@ -88,6 +88,8 @@ QXdgDesktopPortalTheme::QXdgDesktopPortalTheme() themeNames += QGuiApplicationPrivate::platform_integration->themeNames(); // 1) Look for a theme plugin. for (const QString &themeName : std::as_const(themeNames)) { + if (QXdgDesktopPortalTheme::isXdgPlugin(themeName)) + continue; d->baseTheme = QPlatformThemeFactory::create(themeName, nullptr); if (d->baseTheme) break; @@ -97,6 +99,8 @@ QXdgDesktopPortalTheme::QXdgDesktopPortalTheme() // create a theme if (!d->baseTheme) { for (const QString &themeName : std::as_const(themeNames)) { + if (QXdgDesktopPortalTheme::isXdgPlugin(themeName)) + continue; d->baseTheme = QGuiApplicationPrivate::platform_integration->createPlatformTheme(themeName); if (d->baseTheme) break; @@ -263,6 +267,13 @@ QString QXdgDesktopPortalTheme::standardButtonText(int button) const return d->baseTheme->standardButtonText(button); } +bool QXdgDesktopPortalTheme::isXdgPlugin(const QString &key) +{ + return key.compare("xdgdesktopportal"_L1, Qt::CaseInsensitive) == 0 || + key.compare("flatpak"_L1, Qt::CaseInsensitive) == 0 || + key.compare("snap"_L1, Qt::CaseInsensitive) == 0; +} + QT_END_NAMESPACE #include "qxdgdesktopportaltheme.moc" diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.h b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.h index 1ac04c45e6d..19329f53a4e 100644 --- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.h +++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.h @@ -48,6 +48,8 @@ public: QString standardButtonText(int button) const override; + static bool isXdgPlugin(const QString &key); + private: QScopedPointer d_ptr; Q_DISABLE_COPY_MOVE(QXdgDesktopPortalTheme)