diff options
author | Christian Hergert <christian@hergert.me> | 2022-03-09 13:19:22 -0800 |
---|---|---|
committer | Christian Hergert <christian@hergert.me> | 2022-03-09 13:19:22 -0800 |
commit | 32935d9fb01a78e8693fbcaa1005c4b79903cbd6 (patch) | |
tree | 8efb73224d42c39c8096d65143c695c029579685 | |
parent | b390e1da4ffa41da97b6686545fd4d32f4c6d22b (diff) | |
download | gtk+-32935d9fb01a78e8693fbcaa1005c4b79903cbd6.tar.gz |
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).
-rw-r--r-- | gdk/macos/gdkmacosdisplay-private.h | 2 | ||||
-rw-r--r-- | gdk/macos/gdkmacosdisplay.c | 6 |
2 files changed, 7 insertions, 1 deletions
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), |