From 04ebfe94658fb4cf52d278614927cd201dc4a149 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Thu, 26 Feb 2004 22:53:50 +0000 Subject: [PATCH] Return GDK_FILTER_CONTINUE for unhandled message types. Thu Feb 26 17:29:04 2004 Owen Taylor * gdk/x11/gdkevents-x11.c (gdk_wm_protocols_filter): Return GDK_FILTER_CONTINUE for unhandled message types. * gdk/x11/gdkevents-x11.c (gdk_event_translate): Allow multiple filters for the same event type with the standard "GDK_FILTER_CONTINUE == pretend I wasn't here" semantics. * gdk/x11/gdkevents-x11.c (gdk_display_add_client_message_filter): Append to the filter list not prepend, since order now matters. * gdk/win32/gdkevents-win32.c (gdk_add_client_message_filter): Append to the filter list not prepend, since order now matters. --- ChangeLog | 15 +++++++++++++++ ChangeLog.pre-2-10 | 15 +++++++++++++++ ChangeLog.pre-2-4 | 15 +++++++++++++++ ChangeLog.pre-2-6 | 15 +++++++++++++++ ChangeLog.pre-2-8 | 15 +++++++++++++++ gdk/win32/gdkevents-win32.c | 2 +- gdk/x11/gdkevents-x11.c | 17 +++++++++++------ 7 files changed, 87 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7d781581d5..c88616bb29 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +Thu Feb 26 17:29:04 2004 Owen Taylor + + * gdk/x11/gdkevents-x11.c (gdk_wm_protocols_filter): Return + GDK_FILTER_CONTINUE for unhandled message types. + + * gdk/x11/gdkevents-x11.c (gdk_event_translate): Allow + multiple filters for the same event type with the standard + "GDK_FILTER_CONTINUE == pretend I wasn't here" semantics. + + * gdk/x11/gdkevents-x11.c (gdk_display_add_client_message_filter): + Append to the filter list not prepend, since order now matters. + + * gdk/win32/gdkevents-win32.c (gdk_add_client_message_filter): + Append to the filter list not prepend, since order now matters. + Thu Feb 26 23:39:07 2004 Matthias Clasen Fixes for #135333, analysed by Damon Chaplin: diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 7d781581d5..c88616bb29 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,18 @@ +Thu Feb 26 17:29:04 2004 Owen Taylor + + * gdk/x11/gdkevents-x11.c (gdk_wm_protocols_filter): Return + GDK_FILTER_CONTINUE for unhandled message types. + + * gdk/x11/gdkevents-x11.c (gdk_event_translate): Allow + multiple filters for the same event type with the standard + "GDK_FILTER_CONTINUE == pretend I wasn't here" semantics. + + * gdk/x11/gdkevents-x11.c (gdk_display_add_client_message_filter): + Append to the filter list not prepend, since order now matters. + + * gdk/win32/gdkevents-win32.c (gdk_add_client_message_filter): + Append to the filter list not prepend, since order now matters. + Thu Feb 26 23:39:07 2004 Matthias Clasen Fixes for #135333, analysed by Damon Chaplin: diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 7d781581d5..c88616bb29 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,18 @@ +Thu Feb 26 17:29:04 2004 Owen Taylor + + * gdk/x11/gdkevents-x11.c (gdk_wm_protocols_filter): Return + GDK_FILTER_CONTINUE for unhandled message types. + + * gdk/x11/gdkevents-x11.c (gdk_event_translate): Allow + multiple filters for the same event type with the standard + "GDK_FILTER_CONTINUE == pretend I wasn't here" semantics. + + * gdk/x11/gdkevents-x11.c (gdk_display_add_client_message_filter): + Append to the filter list not prepend, since order now matters. + + * gdk/win32/gdkevents-win32.c (gdk_add_client_message_filter): + Append to the filter list not prepend, since order now matters. + Thu Feb 26 23:39:07 2004 Matthias Clasen Fixes for #135333, analysed by Damon Chaplin: diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 7d781581d5..c88616bb29 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,18 @@ +Thu Feb 26 17:29:04 2004 Owen Taylor + + * gdk/x11/gdkevents-x11.c (gdk_wm_protocols_filter): Return + GDK_FILTER_CONTINUE for unhandled message types. + + * gdk/x11/gdkevents-x11.c (gdk_event_translate): Allow + multiple filters for the same event type with the standard + "GDK_FILTER_CONTINUE == pretend I wasn't here" semantics. + + * gdk/x11/gdkevents-x11.c (gdk_display_add_client_message_filter): + Append to the filter list not prepend, since order now matters. + + * gdk/win32/gdkevents-win32.c (gdk_add_client_message_filter): + Append to the filter list not prepend, since order now matters. + Thu Feb 26 23:39:07 2004 Matthias Clasen Fixes for #135333, analysed by Damon Chaplin: diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 7d781581d5..c88616bb29 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,18 @@ +Thu Feb 26 17:29:04 2004 Owen Taylor + + * gdk/x11/gdkevents-x11.c (gdk_wm_protocols_filter): Return + GDK_FILTER_CONTINUE for unhandled message types. + + * gdk/x11/gdkevents-x11.c (gdk_event_translate): Allow + multiple filters for the same event type with the standard + "GDK_FILTER_CONTINUE == pretend I wasn't here" semantics. + + * gdk/x11/gdkevents-x11.c (gdk_display_add_client_message_filter): + Append to the filter list not prepend, since order now matters. + + * gdk/win32/gdkevents-win32.c (gdk_add_client_message_filter): + Append to the filter list not prepend, since order now matters. + Thu Feb 26 23:39:07 2004 Matthias Clasen Fixes for #135333, analysed by Damon Chaplin: diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index bfa82da8f3..89e854896b 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -812,7 +812,7 @@ gdk_add_client_message_filter (GdkAtom message_type, filter->function = func; filter->data = data; - client_filters = g_list_prepend (client_filters, filter); + client_filters = g_list_append (client_filters, filter); } static void diff --git a/gdk/x11/gdkevents-x11.c b/gdk/x11/gdkevents-x11.c index 2c84d9d469..ddb8009c32 100644 --- a/gdk/x11/gdkevents-x11.c +++ b/gdk/x11/gdkevents-x11.c @@ -355,8 +355,8 @@ gdk_display_add_client_message_filter (GdkDisplay *display, filter->data = data; GDK_DISPLAY_X11(display)->client_filters = - g_list_prepend (GDK_DISPLAY_X11 (display)->client_filters, - filter); + g_list_append (GDK_DISPLAY_X11 (display)->client_filters, + filter); } /** @@ -1867,13 +1867,14 @@ gdk_event_translate (GdkDisplay *display, while (tmp_list) { GdkClientFilter *filter = tmp_list->data; + tmp_list = tmp_list->next; + if (filter->type == message_type) { result = (*filter->function) (xevent, event, filter->data); - break; + if (result != GDK_FILTER_CONTINUE) + break; } - - tmp_list = tmp_list->next; } switch (result) @@ -2014,6 +2015,8 @@ gdk_wm_protocols_filter (GdkXEvent *xev, _gdk_x11_set_input_focus_safe (display, toplevel->focus_window, RevertToParent, xevent->xclient.data.l[1]); + + return GDK_FILTER_REMOVE; } else if ((Atom) xevent->xclient.data.l[0] == gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_PING") && !_gdk_x11_display_is_root_window (display, @@ -2026,9 +2029,11 @@ gdk_wm_protocols_filter (GdkXEvent *xev, xev.xclient.window, False, SubstructureRedirectMask | SubstructureNotifyMask, &xev); + + return GDK_FILTER_REMOVE; } - return GDK_FILTER_REMOVE; + return GDK_FILTER_CONTINUE; } void