60 lines
2.1 KiB
Diff
60 lines
2.1 KiB
Diff
Author: Timo Teräs <timo.teras@iki.fi>
|
|
|
|
Fix QT GTK style to use GTK API to get the active theme name. This fixes
|
|
things for non-GNOME setups, as well as realtime theme change detection.
|
|
|
|
It still tries to detect if GTK-Qt is in use and refuse to run with that
|
|
as it would cause obvious recursion, however that might be not always
|
|
possible.
|
|
|
|
--- a/src/gui/styles/qgtkstyle_p.cpp 2013-06-07 05:16:59.000000000 +0000
|
|
+++ b/src/gui/styles/qgtkstyle_p.cpp 2013-09-25 16:37:34.703506640 +0000
|
|
@@ -505,7 +505,7 @@ void QGtkStylePrivate::initGtkWidgets()
|
|
|
|
static QString themeName;
|
|
if (!gtkWidgetMap()->contains("GtkWindow") && themeName.isEmpty()) {
|
|
- themeName = getThemeName();
|
|
+ themeName = getThemeNameGuess();
|
|
|
|
if (themeName == QLS("Qt") || themeName == QLS("Qt4")) {
|
|
// Due to namespace conflicts with Qt3 and obvious recursion with Qt4,
|
|
@@ -648,7 +648,7 @@ bool QGtkStylePrivate::getGConfBool(cons
|
|
return retVal;
|
|
}
|
|
|
|
-QString QGtkStylePrivate::getThemeName()
|
|
+QString QGtkStylePrivate::getThemeNameGuess()
|
|
{
|
|
QString themeName;
|
|
// We try to parse the gtkrc file first
|
|
@@ -685,6 +685,19 @@ QString QGtkStylePrivate::getThemeName()
|
|
|
|
return themeName;
|
|
}
|
|
+
|
|
+QString QGtkStylePrivate::getThemeName()
|
|
+{
|
|
+ QString themeName;
|
|
+ gchar *theme_name;
|
|
+
|
|
+ GtkSettings *settings = gtk_settings_get_default();
|
|
+ g_object_get(settings, "gtk-theme-name", &theme_name, NULL);
|
|
+ themeName = QString::fromUtf8(theme_name);
|
|
+ g_free(theme_name);
|
|
+
|
|
+ return themeName;
|
|
+}
|
|
|
|
// Get size of the arrow controls in a GtkSpinButton
|
|
int QGtkStylePrivate::getSpinboxArrowSize() const
|
|
--- a/src/gui/styles/qgtkstyle_p.h 2013-06-07 05:16:59.000000000 +0000
|
|
+++ b/src/gui/styles/qgtkstyle_p.h 2013-09-25 16:29:11.310167033 +0000
|
|
@@ -338,6 +338,7 @@ public:
|
|
static bool getGConfBool(const QString &key, bool fallback = 0);
|
|
static QString getGConfString(const QString &key, const QString &fallback = QString());
|
|
|
|
+ static QString getThemeNameGuess();
|
|
static QString getThemeName();
|
|
virtual int getSpinboxArrowSize() const;
|
|
|