From: Christian Hergert Date: Sat, 12 Mar 2022 02:25:47 +0000 (-0800) Subject: macos: pass events to foreign windows X-Git-Tag: archive/raspbian/4.6.5+ds-1+rpi1~1^2~19^2~3^2~7^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ccbaa020ff61876a5326427b950194972c8677d0;p=gtk4.git macos: pass events to foreign windows --- 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;