summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2004-02-26 22:53:50 +0000
committerOwen Taylor <otaylor@src.gnome.org>2004-02-26 22:53:50 +0000
commit04ebfe94658fb4cf52d278614927cd201dc4a149 (patch)
tree00403dcbefaede6a9b71612ae1676826e6255e73 /gdk
parentbb4db89398e7b75edc690e9b970c8c3275eaa416 (diff)
downloadgdk-pixbuf-04ebfe94658fb4cf52d278614927cd201dc4a149.tar.gz
Return GDK_FILTER_CONTINUE for unhandled message types.
Thu Feb 26 17:29:04 2004 Owen Taylor <otaylor@redhat.com> * 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.
Diffstat (limited to 'gdk')
-rw-r--r--gdk/win32/gdkevents-win32.c2
-rw-r--r--gdk/x11/gdkevents-x11.c17
2 files changed, 12 insertions, 7 deletions
diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c
index bfa82da8f..89e854896 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 2c84d9d46..ddb8009c3 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