summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorcinamod <cinamod>2004-06-02 19:53:55 +0000
committercinamod <cinamod>2004-06-02 19:53:55 +0000
commit02039ad7e0bf864123d50c4489e6b7ed35ded2c5 (patch)
tree17e6ceef48f2cd9c8913c70d8b0107db42150b12 /modules
parentaff289b83a87cf9ecb3fa809db871b4d2a997fdc (diff)
downloadgtk+-02039ad7e0bf864123d50c4489e6b7ed35ded2c5.tar.gz
fix inkscape's toolbar buttons, disable application theming if asked nicely, downgrade gtk+ requirements
Diffstat (limited to 'modules')
-rwxr-xr-xmodules/engines/ms-windows/ChangeLog.old9
-rwxr-xr-xmodules/engines/ms-windows/msw_style.c2
-rwxr-xr-xmodules/engines/ms-windows/msw_theme_main.c14
-rwxr-xr-xmodules/engines/ms-windows/xp_theme.c70
-rw-r--r--modules/engines/ms-windows/xp_theme_defs.h15
5 files changed, 51 insertions, 59 deletions
diff --git a/modules/engines/ms-windows/ChangeLog.old b/modules/engines/ms-windows/ChangeLog.old
index 9f0eadec9e..6639cd2665 100755
--- a/modules/engines/ms-windows/ChangeLog.old
+++ b/modules/engines/ms-windows/ChangeLog.old
@@ -1,3 +1,12 @@
+2004-06-02 Dom Lachowicz <cinamod@hotmail.com>
+
+ * configure.in: Bump version number (0.6.1)
+ * src/msw_theme_main.c: Lower GTK+ requirements. We'll work fine on 2.0.x or better
+ * src/xp_theme_defs.h: Remove HAVE_LINES junk
+ * src/xp_theme.c: Disable application theming if XP asks us to
+ * src/msw_style.c: Return true for 'is_toolbar()' check if our parent
+ is a GtkHandleBox. This fixes Inkscape's toolbar icons.
+
2004-05-21 Raymond Penners <raymond@dotsphinx.com>
* === Released 0.6.0 ===
diff --git a/modules/engines/ms-windows/msw_style.c b/modules/engines/ms-windows/msw_style.c
index cbb0ce9154..6ffa0c0a09 100755
--- a/modules/engines/ms-windows/msw_style.c
+++ b/modules/engines/ms-windows/msw_style.c
@@ -1335,7 +1335,7 @@ static gboolean is_toolbar_child(GtkWidget * wid)
{
while(wid)
{
- if(GTK_IS_TOOLBAR(wid))
+ if(GTK_IS_TOOLBAR(wid) || GTK_IS_HANDLE_BOX(wid))
return TRUE;
else
wid = wid->parent;
diff --git a/modules/engines/ms-windows/msw_theme_main.c b/modules/engines/ms-windows/msw_theme_main.c
index da268e09e6..ea399bec99 100755
--- a/modules/engines/ms-windows/msw_theme_main.c
+++ b/modules/engines/ms-windows/msw_theme_main.c
@@ -46,15 +46,15 @@ global_filter_func (void *xevent,
/* catch theme changes */
case WM_THEMECHANGED:
case WM_SYSCOLORCHANGE:
-
+
if(msw_reset_rc_styles != NULL) {
xp_theme_reset ();
msw_style_init ();
-
+
/* force all gtkwidgets to redraw */
(*msw_reset_rc_styles) (gtk_settings_get_default());
}
-
+
return GDK_FILTER_REMOVE;
case WM_SETTINGCHANGE:
@@ -78,12 +78,12 @@ theme_init (GTypeModule *module)
on any GTK 2.x.x platform. */
if(gtk_check_version(2,4,0) == NULL) {
this_module = g_module_open(NULL, 0);
-
+
if(this_module)
g_module_symbol (this_module, "gtk_rc_reset_styles",
(gpointer *)(&msw_reset_rc_styles));
}
-
+
msw_style_init ();
gdk_window_add_filter (NULL, global_filter_func, NULL);
}
@@ -113,7 +113,5 @@ G_MODULE_EXPORT const gchar* g_module_check_init (GModule *module);
const gchar*
g_module_check_init (GModule *module)
{
- return gtk_check_version (GTK_MAJOR_VERSION,
- GTK_MINOR_VERSION,
- GTK_MICRO_VERSION - GTK_INTERFACE_AGE);
+ return gtk_check_version (2,0,0);
}
diff --git a/modules/engines/ms-windows/xp_theme.c b/modules/engines/ms-windows/xp_theme.c
index ce0f0915d7..3c27f236c3 100755
--- a/modules/engines/ms-windows/xp_theme.c
+++ b/modules/engines/ms-windows/xp_theme.c
@@ -115,6 +115,7 @@ typedef HRESULT (FAR PASCAL *DrawThemeBackgroundFunc)
const RECT *pRect, const RECT *pClipRect);
typedef HRESULT (FAR PASCAL *EnableThemeDialogTextureFunc)(HWND hwnd, DWORD dwFlags);
typedef BOOL (FAR PASCAL *IsThemeActiveFunc)(VOID);
+typedef BOOL (FAR PASCAL *IsAppThemedFunc)(VOID);
static GetThemeSysFontFunc get_theme_sys_font_func = NULL;
static GetThemeSysColorFunc get_theme_sys_color_func = NULL;
@@ -124,8 +125,7 @@ static CloseThemeDataFunc close_theme_data_func = NULL;
static DrawThemeBackgroundFunc draw_theme_background_func = NULL;
static EnableThemeDialogTextureFunc enable_theme_dialog_texture_func = NULL;
static IsThemeActiveFunc is_theme_active_func = NULL;
-
-static gboolean was_theming_active = FALSE;
+static IsAppThemedFunc is_app_themed_func = NULL;
static void
xp_theme_close_open_handles (void)
@@ -152,31 +152,27 @@ xp_theme_init (void)
uxtheme_dll = LoadLibrary("uxtheme.dll");
if (!uxtheme_dll) {
- was_theming_active = FALSE;
return;
}
- is_theme_active_func = (IsThemeActiveFunc) GetProcAddress(uxtheme_dll, "IsThemeActive");
- open_theme_data_func = (OpenThemeDataFunc) GetProcAddress(uxtheme_dll, "OpenThemeData");
- close_theme_data_func = (CloseThemeDataFunc) GetProcAddress(uxtheme_dll, "CloseThemeData");
- draw_theme_background_func = (DrawThemeBackgroundFunc) GetProcAddress(uxtheme_dll, "DrawThemeBackground");
- enable_theme_dialog_texture_func = (EnableThemeDialogTextureFunc) GetProcAddress(uxtheme_dll, "EnableThemeDialogTexture");
- get_theme_sys_font_func = (GetThemeSysFontFunc) GetProcAddress(uxtheme_dll, "GetThemeSysFont");
- get_theme_sys_color_func = (GetThemeSysColorFunc) GetProcAddress(uxtheme_dll, "GetThemeSysColor");
- get_theme_sys_metric_func = (GetThemeSysSizeFunc) GetProcAddress(uxtheme_dll, "GetThemeSysSize");
-
- if (is_theme_active_func)
- {
- was_theming_active = (*is_theme_active_func) ();
- }
+ is_app_themed_func = (IsAppThemedFunc) GetProcAddress(uxtheme_dll, "IsAppThemed");
+
+ if(is_app_themed_func) {
+ is_theme_active_func = (IsThemeActiveFunc) GetProcAddress(uxtheme_dll, "IsThemeActive");
+ open_theme_data_func = (OpenThemeDataFunc) GetProcAddress(uxtheme_dll, "OpenThemeData");
+ close_theme_data_func = (CloseThemeDataFunc) GetProcAddress(uxtheme_dll, "CloseThemeData");
+ draw_theme_background_func = (DrawThemeBackgroundFunc) GetProcAddress(uxtheme_dll, "DrawThemeBackground");
+ enable_theme_dialog_texture_func = (EnableThemeDialogTextureFunc) GetProcAddress(uxtheme_dll, "EnableThemeDialogTexture");
+ get_theme_sys_font_func = (GetThemeSysFontFunc) GetProcAddress(uxtheme_dll, "GetThemeSysFont");
+ get_theme_sys_color_func = (GetThemeSysColorFunc) GetProcAddress(uxtheme_dll, "GetThemeSysColor");
+ get_theme_sys_metric_func = (GetThemeSysSizeFunc) GetProcAddress(uxtheme_dll, "GetThemeSysSize");
+ }
}
void
xp_theme_reset (void)
{
xp_theme_close_open_handles ();
- was_theming_active = is_theme_active_func
- ? (*is_theme_active_func) () : FALSE;
}
void
@@ -190,6 +186,7 @@ xp_theme_exit (void)
FreeLibrary (uxtheme_dll);
uxtheme_dll = NULL;
+ is_app_themed_func = NULL;
is_theme_active_func = NULL;
open_theme_data_func = NULL;
close_theme_data_func = NULL;
@@ -705,26 +702,29 @@ xp_theme_draw (GdkWindow *win, XpThemeElement element, GtkStyle *style,
return TRUE;
}
+static gboolean
+xp_theme_is_active (void)
+{
+ gboolean active = FALSE;
+
+ if (is_app_themed_func)
+ {
+ active = (*is_app_themed_func) ();
+
+ if (active && is_theme_active_func)
+ {
+ active = (*is_theme_active_func) ();
+ }
+ }
+
+ return active;
+}
+
gboolean
xp_theme_is_drawable (XpThemeElement element)
{
- if (is_theme_active_func)
- {
- gboolean active = (*is_theme_active_func) ();
- /* A bit of a hack, but it at least detects theme
- switches between XP and classic looks on systems
- using older GTK+ version (2.2.0-?) that do not
- support theme switch detection (gdk_window_add_filter). */
- if (active != was_theming_active)
- {
- xp_theme_reset ();
- }
-
- if (active)
- {
- return (xp_theme_get_handle_by_element (element) != NULL);
- }
- }
+ if (xp_theme_is_active ())
+ return (xp_theme_get_handle_by_element (element) != NULL);
return FALSE;
}
diff --git a/modules/engines/ms-windows/xp_theme_defs.h b/modules/engines/ms-windows/xp_theme_defs.h
index c6d4473897..9b40b5fd40 100644
--- a/modules/engines/ms-windows/xp_theme_defs.h
+++ b/modules/engines/ms-windows/xp_theme_defs.h
@@ -159,19 +159,4 @@ typedef HANDLE HTHEME;
#define TMT_STATUSFONT 804
#define TMT_MSGBOXFONT 805
-#if UXTHEME_HAS_LINES
-
-#error unknown/undocumented uxtheme values
-
-/* #define GP_LINEHORZ */
-/* #define GP_LINEVERT */
-/* #define LHS_RAISED */
-/* #define LHS_SUNKEN */
-/* #define LHS_FLAT */
-/* #define LVS_RAISED */
-/* #define LVS_SUNKEN */
-/* #define LHS_FLAT */
-
-#endif /* UXTHEME_HAS_LINES */
-
#endif /* XP_THEME_DFNS_H */