diff options
author | Michael Natterer <mitch@gimp.org> | 2012-11-09 17:12:30 +0100 |
---|---|---|
committer | Michael Natterer <mitch@gimp.org> | 2012-11-20 10:35:40 +0100 |
commit | 455a0ecc1cf690018ea8d0223f8f37fd17271cef (patch) | |
tree | df02885e5f9304f1badb544821299ec856620580 | |
parent | 2d5ad5f54e7e78fd35ef09b4ce055af9f6d9aa0a (diff) | |
download | gtk+-455a0ecc1cf690018ea8d0223f8f37fd17271cef.tar.gz |
quartz: always send GDK_NOTIFY_NONLINEAR crossing events
so GtkMenu works properly. This is not right, but not more
wrong than always sending GDK_NOTIFY_ANCESTOR either.
(cherry picked from commit 35a9322e45bb403d34c9e4da036d9d8d559419fb)
-rw-r--r-- | gdk/quartz/gdkevents-quartz.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c index cd05882a05..fcda072441 100644 --- a/gdk/quartz/gdkevents-quartz.c +++ b/gdk/quartz/gdkevents-quartz.c @@ -1121,8 +1121,9 @@ synthesize_crossing_event (GdkWindow *window, switch ([nsevent type]) { case NSMouseEntered: - /* Enter events are considered always to be from the root window as we - * can't know for sure from what window we enter. + /* Enter events are considered always to be from another toplevel + * window, this shouldn't negatively affect any app or gtk code, + * and is the only way to make GtkMenu work. EEK EEK EEK. */ if (!(window->event_mask & GDK_ENTER_NOTIFY_MASK)) return FALSE; @@ -1132,14 +1133,11 @@ synthesize_crossing_event (GdkWindow *window, x_root, y_root, GDK_ENTER_NOTIFY, GDK_CROSSING_NORMAL, - GDK_NOTIFY_ANCESTOR); + GDK_NOTIFY_NONLINEAR); return TRUE; case NSMouseExited: - /* Exited always is to the root window as far as we are concerned, - * since there is no way to reliably get information about what new - * window is entered when exiting one. - */ + /* See above */ if (!(window->event_mask & GDK_LEAVE_NOTIFY_MASK)) return FALSE; @@ -1148,7 +1146,7 @@ synthesize_crossing_event (GdkWindow *window, x_root, y_root, GDK_LEAVE_NOTIFY, GDK_CROSSING_NORMAL, - GDK_NOTIFY_ANCESTOR); + GDK_NOTIFY_NONLINEAR); return TRUE; default: |