From 913f6d4a4fc63f2ba19c00b8db6d9c3ab268adc9 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Wed, 9 Mar 2022 13:19:22 -0800 Subject: [PATCH] macos: allow dropping NSEvent without propagation There are cases we might want to consume a NSEvent without creating a GdkEvent or passing it along to the NSApplication for processing. This creates a new value we can use and check against to propagate that without having to do out parameters at the slightly odd invalid pointer value for a GdkEvent (similar to how MMAP_FAILED is done). --- gdk/macos/gdkmacosdisplay-private.h | 2 ++ gdk/macos/gdkmacosdisplay.c | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gdk/macos/gdkmacosdisplay-private.h b/gdk/macos/gdkmacosdisplay-private.h index ef17618d61..72b5f5cd57 100644 --- a/gdk/macos/gdkmacosdisplay-private.h +++ b/gdk/macos/gdkmacosdisplay-private.h @@ -43,6 +43,8 @@ G_BEGIN_DECLS #define GIC_FILTER_PASSTHRU 0 #define GIC_FILTER_FILTERED 1 +#define GDK_MACOS_EVENT_DROP (GdkEvent *)GSIZE_TO_POINTER(1) + struct _GdkMacosDisplay { GdkDisplay parent_instance; diff --git a/gdk/macos/gdkmacosdisplay.c b/gdk/macos/gdkmacosdisplay.c index bc58c2a6f3..9fbfac49ed 100644 --- a/gdk/macos/gdkmacosdisplay.c +++ b/gdk/macos/gdkmacosdisplay.c @@ -314,7 +314,11 @@ gdk_macos_display_queue_events (GdkDisplay *display) { GdkEvent *event = _gdk_macos_display_translate (self, nsevent); - if (event != NULL) + if (event == GDK_MACOS_EVENT_DROP) + { + [nsevent release]; + } + else if (event != NULL) { push_nsevent (event, nsevent); _gdk_windowing_got_event (GDK_DISPLAY (self), -- 2.30.2