summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@imendio.com>2006-04-13 08:51:33 +0000
committerAnders Carlsson <andersca@src.gnome.org>2006-04-13 08:51:33 +0000
commita62b7cdc9a610b2e74349e25ae6f3c970d6952d2 (patch)
tree8c2a097cf397ee533fc56d46cf6f8a846ce5f67b /gdk
parent7b19dcbe7938e30a0acc3e6ef9c780e3752b4301 (diff)
downloadgtk+-a62b7cdc9a610b2e74349e25ae6f3c970d6952d2.tar.gz
Take grabs into account.
2006-04-13 Anders Carlsson <andersca@imendio.com> * gdk/quartz/gdkevents-quartz.c: (synthesize_enter_event): (synthesize_leave_event): (synthesize_crossing_events): Take grabs into account. (find_window_for_event): Only return grabbed window when owner_events is FALSE.
Diffstat (limited to 'gdk')
-rw-r--r--gdk/quartz/gdkevents-quartz.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
index 97c62f2993..3f6c94a3d4 100644
--- a/gdk/quartz/gdkevents-quartz.c
+++ b/gdk/quartz/gdkevents-quartz.c
@@ -798,6 +798,11 @@ synthesize_enter_event (GdkWindow *window,
{
GdkEvent *event;
+ if (_gdk_quartz_pointer_grab_window != NULL &&
+ !pointer_grab_owner_events &&
+ !(pointer_grab_event_mask & GDK_ENTER_NOTIFY_MASK))
+ return;
+
if (!(GDK_WINDOW_OBJECT (window)->event_mask & GDK_ENTER_NOTIFY_MASK))
return;
@@ -829,6 +834,11 @@ synthesize_leave_event (GdkWindow *window,
{
GdkEvent *event;
+ if (_gdk_quartz_pointer_grab_window != NULL &&
+ !pointer_grab_owner_events &&
+ !(pointer_grab_event_mask & GDK_LEAVE_NOTIFY_MASK))
+ return;
+
if (!(GDK_WINDOW_OBJECT (window)->event_mask & GDK_LEAVE_NOTIFY_MASK))
return;
@@ -926,7 +936,7 @@ synthesize_crossing_events (GdkWindow *window,
/* Dunno where we are coming from */
synthesize_enter_event (window, nsevent, mode, GDK_NOTIFY_UNKNOWN);
}
-
+
_gdk_quartz_update_mouse_window (window);
}
@@ -1060,9 +1070,9 @@ find_window_for_event (NSEvent *nsevent, gint *x, gint *y)
GdkEventMask event_mask;
GdkWindow *real_window;
- if (_gdk_quartz_pointer_grab_window)
+ if (_gdk_quartz_pointer_grab_window && !pointer_grab_owner_events)
{
- if (pointer_grab_event_mask & get_event_mask_from_ns_event (nsevent))
+ if (pointer_grab_event_mask & get_event_mask_from_ns_event (nsevent))
{
int tempx, tempy;
GdkWindowObject *w = GDK_WINDOW_OBJECT (_gdk_quartz_pointer_grab_window);