diff --git a/gtk/Makefile.am b/gtk/Makefile.am index e939a77d6a..1f450284a5 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 0000000000..e28a153adf --- /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 15af2f6265..939d35f48d 100644 --- a/gtk/gtk.gresource.xml +++ b/gtk/gtk.gresource.xml @@ -5,6 +5,7 @@ gtk-win32.css gtk-win32-xp.css gtk-win32-base.css + gtk-win32-classic.css cursor_dnd_ask.png cursor_dnd_link.png cursor_dnd_none.png diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c index 2e17430fcb..f265642bbf 100644 --- a/gtk/gtksettings.c +++ b/gtk/gtksettings.c @@ -45,10 +45,6 @@ #include "quartz/gdkquartz.h" #endif -#ifdef GDK_WINDOWING_WIN32 -#include -#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 6f4df72356..87bcff52c9 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 309c53c778..22a2a54638 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