diff options
author | Christian Hergert <christian@hergert.me> | 2022-03-11 18:25:47 -0800 |
---|---|---|
committer | Christian Hergert <chergert@redhat.com> | 2022-03-16 12:25:10 -0700 |
commit | ccbaa020ff61876a5326427b950194972c8677d0 (patch) | |
tree | 5dcdf274bfa6ace70ca474c4d838bc934a99a0d5 | |
parent | a9c89fa23e883823e7967555ba905a005b5351e8 (diff) | |
download | gtk+-ccbaa020ff61876a5326427b950194972c8677d0.tar.gz |
macos: pass events to foreign windows
-rw-r--r-- | gdk/macos/gdkmacosdisplay-translate.c | 10 |
1 files changed, 10 insertions, 0 deletions
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; |