diff options
author | Po Lu <luangruo@yahoo.com> | 2021-12-21 09:52:05 +0800 |
---|---|---|
committer | Po Lu <luangruo@yahoo.com> | 2021-12-21 09:53:10 +0800 |
commit | a5509a2a5e4bb356fc800c4d3a2c7e8c83710a70 (patch) | |
tree | 779f2c496c1d82ed6bd94dfd459912659585eba0 | |
parent | bfcff4619982f9bf8c9b4a656aae454968b83db5 (diff) | |
download | emacs-a5509a2a5e4bb356fc800c4d3a2c7e8c83710a70.tar.gz |
Fix xg_event_is_for_menubar for XI2 events
* src/gtkutil.c (xg_event_is_for_menubar): Use correct fields
for XI2 events.
* src/xterm.c (handle_one_event): Drop TouchBegin events we
know about.
-rw-r--r-- | src/gtkutil.c | 19 | ||||
-rw-r--r-- | src/xterm.c | 1 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/gtkutil.c b/src/gtkutil.c index 62a9c05a977..7370a795c08 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -4038,7 +4038,7 @@ xg_event_is_for_menubar (struct frame *f, const XEvent *event) #ifdef HAVE_XINPUT2 XIDeviceEvent *xev = (XIDeviceEvent *) event->xcookie.data; - if (event->type == GenericEvent) /* XI_ButtonPress or XI_ButtonRelease */ + if (event->type == GenericEvent) /* XI_ButtonPress or XI_ButtonRelease or a touch event. */ { if (! (xev->event_x >= 0 && xev->event_x < FRAME_PIXEL_WIDTH (f) @@ -4075,8 +4075,21 @@ xg_event_is_for_menubar (struct frame *f, const XEvent *event) list = gtk_container_get_children (GTK_CONTAINER (x->menubar_widget)); if (! list) return 0; int scale = xg_get_scale (f); - rec.x = event->xbutton.x / scale; - rec.y = event->xbutton.y / scale; +#ifdef HAVE_XINPUT2 + if (event->type == GenericEvent) + { + rec.x = xev->event_x / scale; + rec.y = xev->event_y / scale; + } + else + { +#else + rec.x = event->xbutton.x / scale; + rec.y = event->xbutton.y / scale; +#endif +#ifdef HAVE_XINPUT2 + } +#endif rec.width = 1; rec.height = 1; diff --git a/src/xterm.c b/src/xterm.c index 0cc093dc752..1691db19659 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -10891,6 +10891,7 @@ handle_one_xevent (struct x_display_info *dpyinfo, if (f && device->direct_p) { + *finish = X_EVENT_DROP; x_catch_errors (dpyinfo->display); XIAllowTouchEvents (dpyinfo->display, xev->deviceid, xev->detail, xev->event, XIAcceptTouch); |