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>bb10
parent
e4b36acf11
commit
f439108c4f
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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"));
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue