Blob Blame History Raw
diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
index 97e0203c..5bee160a 100644
--- a/src/client/qwaylandintegration.cpp
+++ b/src/client/qwaylandintegration.cpp
@@ -99,20 +99,26 @@ public:
 
         if (QGuiApplication::desktopSettingsAware()) {
             const QByteArray desktopEnvironment = QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment();
-
+            QList<QByteArray> gtkBasedEnvironments;
+            gtkBasedEnvironments << "GNOME"
+                                 << "X-CINNAMON"
+                                 << "UNITY"
+                                 << "MATE"
+                                 << "XFCE"
+                                 << "LXDE";
             if (desktopEnvironment == QByteArrayLiteral("KDE")) {
 #if QT_CONFIG(settings)
                 result.push_back(QStringLiteral("kde"));
 #endif
-            } else if (!desktopEnvironment.isEmpty() &&
-                desktopEnvironment != QByteArrayLiteral("UNKNOWN") &&
-                desktopEnvironment != QByteArrayLiteral("GNOME") &&
-                desktopEnvironment != QByteArrayLiteral("UNITY") &&
-                desktopEnvironment != QByteArrayLiteral("MATE") &&
-                desktopEnvironment != QByteArrayLiteral("XFCE") &&
-                desktopEnvironment != QByteArrayLiteral("LXDE"))
+            } else if (gtkBasedEnvironments.contains(desktopEnvironment)) {
+                // prefer the GTK3 theme implementation with native dialogs etc.
+                result.push_back(QStringLiteral("gtk3"));
+                // fallback to the generic Gnome theme if loading the GTK3 theme fails
+                result.push_back(QLatin1String(QGnomeTheme::name));
+            } else if (!desktopEnvironment.isEmpty() && desktopEnvironment != QByteArrayLiteral("UNKNOWN")) {
                 // Ignore X11 desktop environments
                 result.push_back(QString::fromLocal8Bit(desktopEnvironment.toLower()));
+            }
         }
 
         if (result.isEmpty())