[gtk+] win32: Capture WM_THEMECHANGED
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] win32: Capture WM_THEMECHANGED
- Date: Thu, 11 Feb 2016 02:47:08 +0000 (UTC)
commit 15198018785257d9dd305de810af6d73b23154b3
Author: Benjamin Otte <otte gnome org>
Date: Mon Feb 8 02:49:34 2016 +0100
win32: Capture WM_THEMECHANGED
We're not doing anything useful with it yet. This will follow in the coming commits.
gtk/gtkwin32theme.c | 25 +++++++++++++++++++++++++
1 files changed, 25 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkwin32theme.c b/gtk/gtkwin32theme.c
index e4db679..3d0abe3 100644
--- a/gtk/gtkwin32theme.c
+++ b/gtk/gtkwin32theme.c
@@ -25,6 +25,7 @@
#ifdef G_OS_WIN32
+#include <gdk/win32/gdkwin32.h>
#include <cairo-win32.h>
#define UXTHEME_DLL "uxtheme.dll"
@@ -74,6 +75,28 @@ static GetThemePartSizeFunc get_theme_part_size = NULL;
static GHashTable *hthemes_by_class = NULL;
+static GdkFilterReturn
+invalidate_win32_themes (GdkXEvent *xevent,
+ GdkEvent *event,
+ gpointer unused)
+{
+ MSG *msg;
+
+ if (!GDK_IS_WIN32_WINDOW (event->any.window))
+ return GDK_FILTER_CONTINUE;
+
+ msg = (MSG *) xevent;
+ if (msg->message != WM_THEMECHANGED)
+ return GDK_FILTER_CONTINUE;
+
+ if (g_hash_table_size (hthemes_by_class) > 0)
+ gtk_style_context_reset_widgets (gdk_display_get_default_screen (gdk_window_get_display
(event->any.window)));
+
+ g_hash_table_remove_all (hthemes_by_class);
+
+ return GDK_FILTER_CONTINUE;
+}
+
static void
_gtk_win32_theme_init (void)
{
@@ -132,6 +155,8 @@ _gtk_win32_theme_init (void)
}
hthemes_by_class = g_hash_table_new (g_str_hash, g_str_equal);
+
+ gdk_window_add_filter (NULL, invalidate_win32_themes, NULL);
}
HTHEME
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]