From 73c527aef028711f40456bb650ff522caaf11528 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Wed, 19 Oct 2011 21:36:41 +0200 Subject: [PATCH] win32: Record the native event mask in use --- gdk/win32/gdkwindow-win32.c | 16 ++++++++++++---- gdk/win32/gdkwindow-win32.h | 2 ++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c index a8f1cbcf30..db2b04eb60 100644 --- a/gdk/win32/gdkwindow-win32.c +++ b/gdk/win32/gdkwindow-win32.c @@ -571,7 +571,7 @@ _gdk_win32_display_create_window_impl (GdkDisplay *display, if (!title || !*title) title = ""; - window->event_mask = GDK_STRUCTURE_MASK | event_mask; + impl->native_event_mask = GDK_STRUCTURE_MASK | event_mask; if (attributes_mask & GDK_WA_TYPE_HINT) gdk_window_set_type_hint (window, attributes->type_hint); @@ -2028,21 +2028,29 @@ _gdk_windowing_window_at_device_position (GdkDisplay *display, static GdkEventMask gdk_win32_window_get_events (GdkWindow *window) { + GdkWindowImplWin32 *impl; + if (GDK_WINDOW_DESTROYED (window)) return 0; - return window->event_mask; + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); + + return impl->native_event_mask; } static void gdk_win32_window_set_events (GdkWindow *window, - GdkEventMask event_mask) + GdkEventMask event_mask) { + GdkWindowImplWin32 *impl; + + impl = GDK_WINDOW_IMPL_WIN32 (window->impl); + /* gdk_window_new() always sets the GDK_STRUCTURE_MASK, so better * set it here, too. Not that I know or remember why it is * necessary, will have to test some day. */ - window->event_mask = GDK_STRUCTURE_MASK | event_mask; + impl->native_event_mask = GDK_STRUCTURE_MASK | event_mask; } static void diff --git a/gdk/win32/gdkwindow-win32.h b/gdk/win32/gdkwindow-win32.h index 910d73540d..8aad9d3dad 100644 --- a/gdk/win32/gdkwindow-win32.h +++ b/gdk/win32/gdkwindow-win32.h @@ -65,6 +65,8 @@ struct _GdkWindowImplWin32 gint hint_flags; GdkGeometry hints; + GdkEventMask native_event_mask; + GdkWindowTypeHint type_hint; gboolean extension_events_selected;