From ccbaa020ff61876a5326427b950194972c8677d0 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Fri, 11 Mar 2022 18:25:47 -0800 Subject: [PATCH] macos: pass events to foreign windows --- gdk/macos/gdkmacosdisplay-translate.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gdk/macos/gdkmacosdisplay-translate.c b/gdk/macos/gdkmacosdisplay-translate.c index 9caddca811..7a0b84ccdb 100644 --- a/gdk/macos/gdkmacosdisplay-translate.c +++ b/gdk/macos/gdkmacosdisplay-translate.c @@ -1086,6 +1086,7 @@ _gdk_macos_display_translate (GdkMacosDisplay *self, GdkMacosSurface *surface; GdkMacosWindow *window; NSEventType event_type; + NSWindow *event_window; GdkEvent *ret = NULL; int x; int y; @@ -1128,6 +1129,15 @@ _gdk_macos_display_translate (GdkMacosDisplay *self, return NULL; } + /* If the event was delivered to NSWindow that is foreign (or rather, + * Cocoa native), then we should pass the event along to that window. + */ + if ((event_window = [nsevent window]) && !GDK_IS_MACOS_WINDOW (event_window)) + return NULL; + + /* If we can't find a GdkSurface to deliver the event to, then we + * should pass it along to the NSApp. + */ if (!(surface = find_surface_for_ns_event (self, nsevent, &x, &y))) return NULL; -- 2.30.2