Commit 5411a3a1 authored by Dom Lachowicz's avatar Dom Lachowicz Committed by Dom Lachowicz
Browse files

Bug #313627. Make win32 theme's handling of toolbars, handleboxes, and

2005-11-12  Dom Lachowicz <cinamod@hotmail.com>

	* modules/engines/ms-windows/msw_style.c: Bug #313627. Make win32
	theme's handling of toolbars, handleboxes, and menubars more in-line
	with Microsoft's IE style.
	* modules/engines/ms-windows/*.c: Indentation cleanups
parent 82f12b61
2005-11-12 Dom Lachowicz <cinamod@hotmail.com>
* modules/engines/ms-windows/msw_style.c: Bug #313627. Make win32
theme's handling of toolbars, handleboxes, and menubars more in-line
with Microsoft's IE style.
* modules/engines/ms-windows/*.c: Indentation cleanups
2005-11-12 Matthias Clasen <mclasen@redhat.com> 2005-11-12 Matthias Clasen <mclasen@redhat.com>
Make builtin icons work in gtk_window_set_icon_name() Make builtin icons work in gtk_window_set_icon_name()
......
2005-11-12 Dom Lachowicz <cinamod@hotmail.com>
* modules/engines/ms-windows/msw_style.c: Bug #313627. Make win32
theme's handling of toolbars, handleboxes, and menubars more in-line
with Microsoft's IE style.
* modules/engines/ms-windows/*.c: Indentation cleanups
2005-11-12 Matthias Clasen <mclasen@redhat.com> 2005-11-12 Matthias Clasen <mclasen@redhat.com>
Make builtin icons work in gtk_window_set_icon_name() Make builtin icons work in gtk_window_set_icon_name()
......
/* MS-Windows Engine (aka GTK-Wimp) /* MS-Windows Engine (aka GTK-Wimp)
* *
* Copyright (C) 2003, 2004 Raymond Penners <raymond@dotsphinx.com> * Copyright (C) 2003, 2004 Raymond Penners <raymond@dotsphinx.com>
* Includes code adapted from redmond95 by Owen Taylor, and * Includes code adapted from redmond95 by Owen Taylor, and
* gtk-nativewin by Evan Martin * gtk-nativewin by Evan Martin
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public * modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version. * version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details. * Library General Public License for more details.
* *
* You should have received a copy of the GNU Library General Public * You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the * License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
#include "msw_style.h" #include "msw_style.h"
#include "msw_rc_style.h" #include "msw_rc_style.h"
static void msw_rc_style_init (MswRcStyle *style); static void msw_rc_style_init (MswRcStyle * style);
static void msw_rc_style_class_init (MswRcStyleClass *klass); static void msw_rc_style_class_init (MswRcStyleClass * klass);
static GtkStyle *msw_rc_style_create_style (GtkRcStyle *rc_style); static GtkStyle *msw_rc_style_create_style (GtkRcStyle * rc_style);
static GtkRcStyleClass *parent_class; static GtkRcStyleClass *parent_class;
GType msw_type_rc_style = 0; GType msw_type_rc_style = 0;
void void
msw_rc_style_register_type (GTypeModule *module) msw_rc_style_register_type (GTypeModule * module)
{ {
static const GTypeInfo object_info = static const GTypeInfo object_info = {
{ sizeof (MswRcStyleClass),
sizeof (MswRcStyleClass), (GBaseInitFunc) NULL,
(GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL,
(GBaseFinalizeFunc) NULL, (GClassInitFunc) msw_rc_style_class_init,
(GClassInitFunc) msw_rc_style_class_init, NULL, /* class_finalize */
NULL, /* class_finalize */ NULL, /* class_data */
NULL, /* class_data */ sizeof (MswRcStyle),
sizeof (MswRcStyle), 0, /* n_preallocs */
0, /* n_preallocs */ (GInstanceInitFunc) msw_rc_style_init,
(GInstanceInitFunc) msw_rc_style_init, };
};
msw_type_rc_style = g_type_module_register_type (module,
msw_type_rc_style = g_type_module_register_type (module, GTK_TYPE_RC_STYLE,
GTK_TYPE_RC_STYLE, "MswRcStyle",
"MswRcStyle", &object_info, 0);
&object_info, 0); }
}
static void
static void msw_rc_style_init (MswRcStyle * style)
msw_rc_style_init (MswRcStyle *style) {
{ }
}
static void
static void msw_rc_style_class_init (MswRcStyleClass * klass)
msw_rc_style_class_init (MswRcStyleClass *klass) {
{ GtkRcStyleClass *rc_style_class = GTK_RC_STYLE_CLASS (klass);
GtkRcStyleClass *rc_style_class = GTK_RC_STYLE_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
parent_class = g_type_class_peek_parent (klass);
rc_style_class->create_style = msw_rc_style_create_style;
rc_style_class->create_style = msw_rc_style_create_style; }
}
/* Create an empty style suitable to this RC style
/* Create an empty style suitable to this RC style */
*/ static GtkStyle *
static GtkStyle * msw_rc_style_create_style (GtkRcStyle * rc_style)
msw_rc_style_create_style (GtkRcStyle *rc_style) {
{ return g_object_new (MSW_TYPE_STYLE, NULL);
return g_object_new (MSW_TYPE_STYLE, NULL); }
}
This diff is collapsed.
/* MS-Windows Engine (aka GTK-Wimp) /* MS-Windows Engine (aka GTK-Wimp)
* *
* Copyright (C) 2003, 2004 Raymond Penners <raymond@dotsphinx.com> * Copyright (C) 2003, 2004 Raymond Penners <raymond@dotsphinx.com>
* Includes code adapted from redmond95 by Owen Taylor, and * Includes code adapted from redmond95 by Owen Taylor, and
* gtk-nativewin by Evan Martin * gtk-nativewin by Evan Martin
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public * modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either * License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version. * version 2 of the License, or (at your option) any later version.
* *
* This library is distributed in the hope that it will be useful, * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details. * Library General Public License for more details.
* *
* You should have received a copy of the GNU Library General Public * You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the * License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
#include <windows.h> #include <windows.h>
#include <gmodule.h> #include <gmodule.h>
#include "gtk/gtk.h" #include "gtk/gtk.h"
#include "msw_style.h" #include "msw_style.h"
#include "msw_rc_style.h" #include "msw_rc_style.h"
#include "xp_theme.h" #include "xp_theme.h"
#ifndef WM_THEMECHANGED #ifndef WM_THEMECHANGED
#define WM_THEMECHANGED 0x031A /* winxp only */ #define WM_THEMECHANGED 0x031A /* winxp only */
#endif #endif
static GModule * this_module = NULL; static GModule *this_module = NULL;
static void (*msw_rc_reset_styles) (GtkSettings * settings) = NULL; static void (*msw_rc_reset_styles) (GtkSettings * settings) = NULL;
static GdkFilterReturn static GdkFilterReturn
global_filter_func (void *xevent, global_filter_func (void *xevent, GdkEvent * event, gpointer data)
GdkEvent *event, {
gpointer data) MSG *msg = (MSG *) xevent;
{
MSG *msg = (MSG *) xevent; switch (msg->message)
{
switch (msg->message) /* catch theme changes */
{ case WM_THEMECHANGED:
/* catch theme changes */ case WM_SYSCOLORCHANGE:
case WM_THEMECHANGED:
case WM_SYSCOLORCHANGE: if (msw_rc_reset_styles != NULL)
{
if(msw_rc_reset_styles != NULL) { xp_theme_reset ();
xp_theme_reset (); msw_style_init ();
msw_style_init ();
/* force all gtkwidgets to redraw */
/* force all gtkwidgets to redraw */ (*msw_rc_reset_styles) (gtk_settings_get_default ());
(*msw_rc_reset_styles) (gtk_settings_get_default()); }
}
return GDK_FILTER_REMOVE;
return GDK_FILTER_REMOVE;
case WM_SETTINGCHANGE:
case WM_SETTINGCHANGE: /* catch cursor blink, etc... changes */
/* catch cursor blink, etc... changes */ msw_style_setup_system_settings ();
msw_style_setup_system_settings (); return GDK_FILTER_REMOVE;
return GDK_FILTER_REMOVE;
default:
default: return GDK_FILTER_CONTINUE;
return GDK_FILTER_CONTINUE; }
} }
}
G_MODULE_EXPORT void
G_MODULE_EXPORT void theme_init (GTypeModule * module)
theme_init (GTypeModule *module) {
{ msw_rc_style_register_type (module);
msw_rc_style_register_type (module); msw_style_register_type (module);
msw_style_register_type (module);
/* this craziness is required because only gtk 2.4.x and later have
/* this craziness is required because only gtk 2.4.x and later have gtk_rc_reset_styles(). But we want to be able to run acceptly well on
gtk_rc_reset_styles(). But we want to be able to run acceptly well any GTK 2.x.x platform. */
on any GTK 2.x.x platform. */ if (gtk_check_version (2, 4, 0) == NULL)
if(gtk_check_version(2,4,0) == NULL) { {
this_module = g_module_open(NULL, 0); this_module = g_module_open (NULL, 0);
if(this_module) if (this_module)
g_module_symbol (this_module, "gtk_rc_reset_styles", g_module_symbol (this_module, "gtk_rc_reset_styles",
(gpointer *)(&msw_rc_reset_styles)); (gpointer *) (&msw_rc_reset_styles));
} }
msw_style_init (); msw_style_init ();
gdk_window_add_filter (NULL, global_filter_func, NULL); gdk_window_add_filter (NULL, global_filter_func, NULL);
} }
G_MODULE_EXPORT void G_MODULE_EXPORT void
theme_exit (void) theme_exit (void)
{ {
gdk_window_remove_filter (NULL, global_filter_func, NULL); gdk_window_remove_filter (NULL, global_filter_func, NULL);
if(this_module) { if (this_module)
g_module_close(this_module); {
this_module = NULL; g_module_close (this_module);
} this_module = NULL;
} }
}
G_MODULE_EXPORT GtkRcStyle *
theme_create_rc_style (void) G_MODULE_EXPORT GtkRcStyle *
{ theme_create_rc_style (void)
return g_object_new (MSW_TYPE_RC_STYLE, NULL); {
} return g_object_new (MSW_TYPE_RC_STYLE, NULL);
}
/* The following function will be called by GTK+ when the module
* is loaded and checks to see if we are compatible with the /* The following function will be called by GTK+ when the module
* version of GTK+ that loads us. * is loaded and checks to see if we are compatible with the
*/ * version of GTK+ that loads us.
G_MODULE_EXPORT const gchar* */
g_module_check_init (GModule *module) G_MODULE_EXPORT const gchar *
{ g_module_check_init (GModule * module)
return gtk_check_version (2,0,0); {
} return gtk_check_version (2, 0, 0);
}
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment