2018-07-03 08:18:15 +00:00
|
|
|
diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
|
2018-10-09 08:20:59 +00:00
|
|
|
index 195899b13b..67e3f8ee17 100644
|
2018-07-03 08:18:15 +00:00
|
|
|
--- a/gdk/quartz/gdkevents-quartz.c
|
|
|
|
+++ b/gdk/quartz/gdkevents-quartz.c
|
2018-10-09 08:20:59 +00:00
|
|
|
@@ -729,7 +729,7 @@ _gdk_quartz_events_send_map_event (GdkWindow *window)
|
|
|
|
}
|
|
|
|
|
|
|
|
static NSView *
|
|
|
|
-find_nsview_at_pos (GdkWindowImplQuartz *impl, gint x, gint y)
|
|
|
|
+find_nsview_at_pos (GdkWindowImplQuartz *impl, gint x, gint y, bool dont_recurse)
|
|
|
|
{
|
|
|
|
NSView *view = impl->view;
|
|
|
|
guint n_subviews;
|
|
|
|
@@ -748,7 +748,10 @@ find_nsview_at_pos (GdkWindowImplQuartz *impl, gint x, gint y)
|
2018-07-03 08:18:15 +00:00
|
|
|
if (r.origin.x <= x && r.origin.x + r.size.width >= x &&
|
|
|
|
r.origin.y <= y && r.origin.y + r.size.height >= y)
|
|
|
|
{
|
|
|
|
- NSView* child = find_nsview_at_pos (impl, x - r.origin.x, y - r.origin.y);
|
2018-10-09 08:20:59 +00:00
|
|
|
+ if (dont_recurse)
|
|
|
|
+ return sv;
|
|
|
|
+
|
|
|
|
+ NSView* child = find_nsview_at_pos (impl, x - r.origin.x, y - r.origin.y, TRUE);
|
2018-07-03 08:18:15 +00:00
|
|
|
if (child != NULL)
|
|
|
|
return child;
|
|
|
|
else
|
2018-10-09 08:20:59 +00:00
|
|
|
@@ -932,7 +935,7 @@ find_window_for_ns_event (NSEvent *nsevent,
|
|
|
|
toplevel_private = (GdkWindowObject *)toplevel;
|
|
|
|
toplevel_impl = (GdkWindowImplQuartz *)toplevel_private->impl;
|
|
|
|
|
|
|
|
- subview = find_nsview_at_pos (toplevel_impl, *x, *y);
|
|
|
|
+ subview = find_nsview_at_pos (toplevel_impl, *x, *y, FALSE);
|
|
|
|
if (subview != NULL && ![subview isKindOfClass:[GdkQuartzView class]]) {
|
|
|
|
g_signal_emit_by_name (toplevel, "native-child-event",
|
|
|
|
subview, nsevent);
|