emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 3ce5918: Fix xwidget popups on XI2 again


From: Po Lu
Subject: master 3ce5918: Fix xwidget popups on XI2 again
Date: Sun, 28 Nov 2021 00:44:18 -0500 (EST)

branch: master
commit 3ce591804badfde86870aa02a1432e870028e531
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Fix xwidget popups on XI2 again
    
    * src/xwidget.c (xwidget_button_1): Release seat grab.
---
 src/xwidget.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/xwidget.c b/src/xwidget.c
index e07b290..a5b96d0 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -910,6 +910,8 @@ xwidget_button_1 (struct xwidget_view *view,
 #ifdef HAVE_XINPUT2
   struct x_display_info *dpyinfo;
   struct xi_device_t *xi_device;
+  GdkSeat *seat;
+  GdkDevice *device;
 #endif
 
   /* X and Y should be relative to the origin of view->wdesc.  */
@@ -936,12 +938,20 @@ xwidget_button_1 (struct xwidget_view *view,
 
 #ifdef HAVE_XINPUT2
   dpyinfo = FRAME_DISPLAY_INFO (view->frame);
+  device = xg_event->button.device;
+
   for (int idx = 0; idx < dpyinfo->num_devices; ++idx)
     {
       xi_device = &dpyinfo->devices[idx];
 
       XIUngrabDevice (view->dpy, xi_device->device_id, CurrentTime);
     }
+
+  if (device)
+    {
+      seat = gdk_device_get_seat (device);
+      gdk_seat_ungrab (seat);
+    }
 #endif
 
   gtk_main_do_event (xg_event);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]