[gtk/wip/chergert/for-4-6: 42/56] macos: allow dropping NSEvent without propagation
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/for-4-6: 42/56] macos: allow dropping NSEvent without propagation
- Date: Wed, 16 Mar 2022 19:25:45 +0000 (UTC)
commit 913f6d4a4fc63f2ba19c00b8db6d9c3ab268adc9
Author: Christian Hergert <christian hergert me>
Date: Wed Mar 9 13:19:22 2022 -0800
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),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]