[gtk+] win32: Fall back to raleigh with the classic theme
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] win32: Fall back to raleigh with the classic theme
- Date: Tue, 3 Apr 2012 17:28:43 +0000 (UTC)
commit a4cde82365d766d63a062313c7ff6670c4b1eb74
Author: Alexander Larsson <alexl redhat com>
Date: Tue Apr 3 19:26:15 2012 +0200
win32: Fall back to raleigh with the classic theme
This is not ideal, we should have a real classic windows theme,
but at least its better than everything being pink, which is what
happens otherwise when theming is not enables.
gtk/Makefile.am | 3 ++-
gtk/gtk-win32-classic.css | 4 ++++
gtk/gtk.gresource.xml | 1 +
gtk/gtksettings.c | 16 +---------------
gtk/gtkwin32theme.c | 22 ++++++++++++++++++----
gtk/gtkwin32themeprivate.h | 1 +
6 files changed, 27 insertions(+), 20 deletions(-)
---
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index e939a77..1f45028 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -961,6 +961,7 @@ gtk_extra_sources = \
gtk-win32-base.css \
gtk-win32.css \
gtk-win32-xp.css \
+ gtk-win32-classic.css \
gtkversion.h.in \
gtkmarshalers.list \
fallback-c89.c
@@ -1036,7 +1037,7 @@ gtktypebuiltins.c: @REBUILD@ $(gtk_public_h_sources) $(deprecated_h_sources) gtk
gtkresources.h: gtk.gresource.xml
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $(srcdir)/gtk.gresource.xml \
--target=$@ --sourcedir=$(srcdir) --c-name _gtk --generate-header --manual-register
-gtkresources.c: gtk.gresource.xml gtk-default.css gtk-win32.css $(DND_CURSORS)
+gtkresources.c: gtk.gresource.xml gtk-default.css gtk-win32.css gtk-win32-xp.css gtk-win32-base.css gtk-win32-classic.css $(DND_CURSORS)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) $(srcdir)/gtk.gresource.xml \
--target=$@ --sourcedir=$(srcdir) --c-name _gtk --generate-source --manual-register
diff --git a/gtk/gtk-win32-classic.css b/gtk/gtk-win32-classic.css
new file mode 100644
index 0000000..e28a153
--- /dev/null
+++ b/gtk/gtk-win32-classic.css
@@ -0,0 +1,4 @@
+/* We should have a real win32 classic theme that picks up
+ colors from the settings. But for now, at least don't break
+ when win32 is in classic mode by just using raleigh. */
+ import url("Raleigh.css");
diff --git a/gtk/gtk.gresource.xml b/gtk/gtk.gresource.xml
index 15af2f6..939d35f 100644
--- a/gtk/gtk.gresource.xml
+++ b/gtk/gtk.gresource.xml
@@ -5,6 +5,7 @@
<file>gtk-win32.css</file>
<file>gtk-win32-xp.css</file>
<file>gtk-win32-base.css</file>
+ <file>gtk-win32-classic.css</file>
<file alias="cursor/dnd-ask.png">cursor_dnd_ask.png</file>
<file alias="cursor/dnd-link.png">cursor_dnd_link.png</file>
<file alias="cursor/dnd-none.png">cursor_dnd_none.png</file>
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
index 2e17430..f265642 100644
--- a/gtk/gtksettings.c
+++ b/gtk/gtksettings.c
@@ -45,10 +45,6 @@
#include "quartz/gdkquartz.h"
#endif
-#ifdef GDK_WINDOWING_WIN32
-#include <windows.h>
-#endif
-
#undef GDK_DEPRECATED
#undef GDK_DEPRECATED_FOR
#define GDK_DEPRECATED
@@ -331,14 +327,6 @@ gtk_settings_class_init (GtkSettingsClass *class)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (class);
guint result;
-#ifdef G_OS_WIN32
- OSVERSIONINFO version;
- BOOL version_res;
-
- memset (&version, 0, sizeof (version));
- version.dwOSVersionInfoSize = sizeof (version);
- version_res = GetVersionEx (&version);
-#endif
gobject_class->finalize = gtk_settings_finalize;
gobject_class->get_property = gtk_settings_get_property;
@@ -420,9 +408,7 @@ gtk_settings_class_init (GtkSettingsClass *class)
P_("Theme Name"),
P_("Name of theme to load"),
#ifdef G_OS_WIN32
- (version_res && version.dwMajorVersion >= 6) ?
- "gtk-win32" :
- "gtk-win32-xp",
+ _gtk_win32_theme_get_default (),
#else
"Raleigh",
#endif
diff --git a/gtk/gtkwin32theme.c b/gtk/gtkwin32theme.c
index 6f4df72..87bcff5 100644
--- a/gtk/gtkwin32theme.c
+++ b/gtk/gtkwin32theme.c
@@ -31,6 +31,7 @@
static HINSTANCE uxtheme_dll = NULL;
static gboolean use_xp_theme = FALSE;
+static OSVERSIONINFO os_version;
static HTHEME needs_alpha_fixup1 = NULL;
static HTHEME needs_alpha_fixup2 = NULL;
static HTHEME needs_alpha_fixup3 = NULL;
@@ -84,7 +85,6 @@ static GHashTable *hthemes_by_class = NULL;
static void
_gtk_win32_theme_init (void)
{
- OSVERSIONINFO version;
char *buf;
char dummy;
int n, k;
@@ -141,9 +141,10 @@ _gtk_win32_theme_init (void)
hthemes_by_class = g_hash_table_new (g_str_hash, g_str_equal);
- memset (&version, 0, sizeof (version));
- version.dwOSVersionInfoSize = sizeof (version);
- if (GetVersionEx (&version) && version.dwMajorVersion == 5)
+ memset (&os_version, 0, sizeof (os_version));
+ os_version.dwOSVersionInfoSize = sizeof (os_version);
+ GetVersionEx (&os_version);
+ if (os_version.dwMajorVersion == 5)
{
needs_alpha_fixup1 = _gtk_win32_lookup_htheme_by_classname ("scrollbar");
needs_alpha_fixup2 = _gtk_win32_lookup_htheme_by_classname ("toolbar");
@@ -444,3 +445,16 @@ _gtk_win32_theme_color_resolve (const char *theme_class,
#endif
return TRUE;
}
+
+const char *
+_gtk_win32_theme_get_default (void)
+{
+#ifdef G_OS_WIN32
+ _gtk_win32_theme_init ();
+
+ if (use_xp_theme)
+ return (os_version.dwMajorVersion >= 6) ? "gtk-win32" : "gtk-win32-xp";
+#endif
+ return "gtk-win32-classic";
+}
+
diff --git a/gtk/gtkwin32themeprivate.h b/gtk/gtkwin32themeprivate.h
index 309c53c..22a2a54 100644
--- a/gtk/gtkwin32themeprivate.h
+++ b/gtk/gtkwin32themeprivate.h
@@ -55,6 +55,7 @@ GtkSymbolicColor *_gtk_win32_theme_color_parse (GtkCssParser *parser);
gboolean _gtk_win32_theme_color_resolve (const char *theme_class,
gint id,
GdkRGBA *color);
+const char * _gtk_win32_theme_get_default (void);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]