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.
This commit is contained in:
parent
bfcff46199
commit
a5509a2a5e
2 changed files with 17 additions and 3 deletions
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue