summaryrefslogtreecommitdiffstats
path: root/main/qt/qt-gtk-theme-fix.patch
blob: a9e4dc7da47d9e2cbb162ad42b6e08c5414c98c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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.

diff -rup qt-everywhere-opensource-src-4.8.5.orig/src/gui/styles/qgtkstyle_p.cpp qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.cpp
--- qt-everywhere-opensource-src-4.8.5.orig/src/gui/styles/qgtkstyle_p.cpp	2013-06-07 05:16:59.000000000 +0000
+++ qt-everywhere-opensource-src-4.8.5/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
diff -rup qt-everywhere-opensource-src-4.8.5.orig/src/gui/styles/qgtkstyle_p.h qt-everywhere-opensource-src-4.8.5/src/gui/styles/qgtkstyle_p.h
--- qt-everywhere-opensource-src-4.8.5.orig/src/gui/styles/qgtkstyle_p.h	2013-06-07 05:16:59.000000000 +0000
+++ qt-everywhere-opensource-src-4.8.5/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;