[gtk/wip/chergert/quartz4u] macos: always use event window for entered/leave events
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/quartz4u] macos: always use event window for entered/leave events
- Date: Fri, 15 May 2020 00:07:40 +0000 (UTC)
commit 64f0fbb2def87d328921cb2c41caf350f3f78d2a
Author: Christian Hergert <chergert redhat com>
Date: Thu May 14 15:22:56 2020 -0700
macos: always use event window for entered/leave events
We don't seem to be able to trust the window for everything, but
for these it seems to be okay (and preferred).
gdk/macos/gdkmacosdisplay-translate.c | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
---
diff --git a/gdk/macos/gdkmacosdisplay-translate.c b/gdk/macos/gdkmacosdisplay-translate.c
index 658b959ef6..7bcad51003 100644
--- a/gdk/macos/gdkmacosdisplay-translate.c
+++ b/gdk/macos/gdkmacosdisplay-translate.c
@@ -684,7 +684,7 @@ _gdk_macos_display_translate (GdkMacosDisplay *self,
GdkMacosSurface *surface;
GdkMacosWindow *window;
NSEventType event_type;
- NSWindow *nswindow;
+ NSWindow *nswindow = NULL;
GdkEvent *ret = NULL;
NSPoint point;
int x_tmp;
@@ -711,11 +711,24 @@ _gdk_macos_display_translate (GdkMacosDisplay *self,
return NULL;
}
- if (!(nswindow = _gdk_macos_display_find_native_under_pointer (self, &x_tmp, &y_tmp)))
- return NULL;
+ /* Prefer the NSEvent window for certain event types. Other events
+ * we will ignore it and resolve the destination directly.
+ */
+ if (event_type == NSEventTypeMouseEntered ||
+ event_type == NSEventTypeMouseExited)
+ {
+ nswindow = [nsevent window];
+ point = [nsevent locationInWindow];
+ }
- point.x = x_tmp;
- point.y = y_tmp;
+ if (nswindow == NULL)
+ {
+ if (!(nswindow = _gdk_macos_display_find_native_under_pointer (self, &x_tmp, &y_tmp)))
+ return NULL;
+
+ point.x = x_tmp;
+ point.y = y_tmp;
+ }
/* Ignore unless it is for a GdkMacosWindow */
if (!GDK_IS_MACOS_WINDOW (nswindow))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]