diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2012-11-20 09:13:50 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-20 17:08:39 +0100 |
commit | f439108c4f6e456d329a666fe5000d07538b63c1 (patch) | |
tree | b133a672e48c91746fc7bcdeeb7e8585b14d03be /src | |
parent | e4b36acf1183a70907d570afc60ee4b17d03119e (diff) |
Detect Unity by checking XDG_CURRENT_DESKTOP and use Gnome theme.
Fallback to Gtk for unknown desktops, which should be suitable
for most cases like XFCE.
Task-number: QTCREATORBUG-8254
Change-Id: Iaf9959f75852e03a83b5af7d0dead01ef657d678
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
Diffstat (limited to 'src')
3 files changed, 9 insertions, 3 deletions
diff --git a/src/platformsupport/services/genericunix/qgenericunixservices.cpp b/src/platformsupport/services/genericunix/qgenericunixservices.cpp index f6bf8608d1..7d0145e61d 100644 --- a/src/platformsupport/services/genericunix/qgenericunixservices.cpp +++ b/src/platformsupport/services/genericunix/qgenericunixservices.cpp @@ -56,6 +56,10 @@ static inline QByteArray detectDesktopEnvironment() { if (!qEnvironmentVariableIsEmpty("KDE_FULL_SESSION")) return QByteArray("KDE"); + // Check Unity first, whose older versions also have "GNOME_DESKTOP_SESSION_ID" set. + const QByteArray xdgCurrentDesktop = qgetenv("XDG_CURRENT_DESKTOP"); + if (xdgCurrentDesktop == "Unity") + return QByteArrayLiteral("UNITY"); // GNOME_DESKTOP_SESSION_ID is deprecated for some reason, but still check it if (qgetenv("DESKTOP_SESSION") == "gnome" || !qEnvironmentVariableIsEmpty("GNOME_DESKTOP_SESSION_ID")) return QByteArray("GNOME"); diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp index a39f26efc8..d773bc8c8e 100644 --- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp +++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp @@ -420,11 +420,12 @@ QStringList QGenericUnixTheme::themeNames() { QStringList result; if (QGuiApplication::desktopSettingsAware()) { - if (QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment() == QByteArray("KDE")) { + const QByteArray desktopEnvironment = QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment(); + if (desktopEnvironment == QByteArrayLiteral("KDE")) { #ifndef QT_NO_SETTINGS result.push_back(QLatin1String(QKdeTheme::name)); #endif - } else if (QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment() == QByteArray("GNOME")) { + } else { // Gnome, Unity, other Gtk-based desktops like XFCE. result.push_back(QLatin1String(QGnomeTheme::name)); } const QString session = QString::fromLocal8Bit(qgetenv("DESKTOP_SESSION")); diff --git a/src/widgets/itemviews/qfileiconprovider.cpp b/src/widgets/itemviews/qfileiconprovider.cpp index c318855f4e..45579754c7 100644 --- a/src/widgets/itemviews/qfileiconprovider.cpp +++ b/src/widgets/itemviews/qfileiconprovider.cpp @@ -275,7 +275,8 @@ QIcon QFileIconProvider::icon(const QFileInfo &info) const Q_D(const QFileIconProvider); #if defined(Q_OS_UNIX) && !defined(QT_NO_STYLE_GTK) - if (QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment() == QByteArray("GNOME")) { + const QByteArray desktopEnvironment = QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment(); + if (desktopEnvironment != QByteArrayLiteral("KDE")) { QIcon gtkIcon = QGtkStylePrivate::getFilesystemIcon(info); if (!gtkIcon.isNull()) return gtkIcon; |