[gtk+/xi2: 1202/1239] GdkWindow: Block slave devices' events if window has not selected them.
- From: Carlos Garnacho <carlosg src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtk+/xi2: 1202/1239] GdkWindow: Block slave devices' events if window has not selected them.
- Date: Tue, 29 Sep 2009 10:58:49 +0000 (UTC)
commit 457dcfadb2c1e264c95edf878d5eac01a37c91b1
Author: Carlos Garnacho <carlos gnome org>
Date: Sun Sep 20 16:57:40 2009 +0200
GdkWindow: Block slave devices' events if window has not selected them.
gdk/gdkwindow.c | 31 ++++++++++++++++++++++++++-----
1 files changed, 26 insertions(+), 5 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index 5a0936f..693c510 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -9273,6 +9273,18 @@ _gdk_synthesize_crossing_events (GdkDisplay *display,
if (a == b)
return; /* No crossings generated between src and dest */
+ if (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER)
+ {
+ if (a && gdk_window_get_device_events (src, device) == 0)
+ a = NULL;
+
+ if (b && gdk_window_get_device_events (dest, device) == 0)
+ b = NULL;
+ }
+
+ if (!a && !b)
+ return;
+
c = find_common_ancestor (a, b);
non_linear |= (c != a) && (c != b);
@@ -9962,11 +9974,16 @@ proxy_pointer_event (GdkDisplay *display,
event_win = get_event_window (display,
device,
- pointer_window,
- source_event->type,
- state,
- &evmask,
- serial);
+ pointer_window,
+ source_event->type,
+ state,
+ &evmask,
+ serial);
+
+ if (event_win &&
+ gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER &&
+ gdk_window_get_device_events (event_win, device) == 0)
+ return TRUE;
is_hint = FALSE;
@@ -10085,6 +10102,10 @@ proxy_button_event (GdkEvent *source_event,
if (event_win == NULL || display->ignore_core_events)
return TRUE;
+ if (gdk_device_get_device_type (device) != GDK_DEVICE_TYPE_MASTER &&
+ gdk_window_get_device_events (event_win, device) == 0)
+ return TRUE;
+
event = _gdk_make_event (event_win, type, source_event, FALSE);
switch (type)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]