[Xfce4-commits] [apps/xfce4-screenshooter] 11/38: Fix input event handling (now using XInput2)

noreply at xfce.org noreply at xfce.org
Fri Apr 28 03:07:07 CEST 2017


This is an automated email from the git hooks/post-receive script.

andre pushed a commit to branch master
in repository apps/xfce4-screenshooter.

commit a4ccc699eb49a0bdcc4b9ce54e7518c6c7c37220
Author: Andre Miranda <andre42m at gmail.com>
Date:   Sun Feb 12 16:31:20 2017 -0300

    Fix input event handling (now using XInput2)
---
 lib/screenshooter-capture.c | 29 +++++++++++++++++++----------
 1 file changed, 19 insertions(+), 10 deletions(-)

diff --git a/lib/screenshooter-capture.c b/lib/screenshooter-capture.c
index 88b8df7..46c2bc6 100644
--- a/lib/screenshooter-capture.c
+++ b/lib/screenshooter-capture.c
@@ -782,15 +782,21 @@ region_filter_func (GdkXEvent *xevent, GdkEvent *event, RbData *rbdata)
 {
   XEvent *x_event = (XEvent *) xevent;
   gint x2 = 0, y2 = 0;
+  XIDeviceEvent *device_event;
 
-  switch (x_event->type)
+  if (x_event->type != GenericEvent)
+    return GDK_FILTER_CONTINUE;
+
+  switch (x_event->xgeneric.evtype)
     {
       /* Start dragging the rectangle out */
-      case ButtonPress:
+      case XI_ButtonPress:
         TRACE ("Start dragging the rectangle");
 
-        rbdata->rectangle.x = rbdata->x1 = x_event->xkey.x_root;
-        rbdata->rectangle.y = rbdata->y1 = x_event->xkey.y_root;
+        device_event = (XIDeviceEvent*) x_event->xcookie.data;
+
+        rbdata->rectangle.x = rbdata->x1 = device_event->root_x;
+        rbdata->rectangle.y = rbdata->y1 = device_event->root_y;
         rbdata->rectangle.width = 0;
         rbdata->rectangle.height = 0;
         rbdata->pressed = TRUE;
@@ -799,7 +805,7 @@ region_filter_func (GdkXEvent *xevent, GdkEvent *event, RbData *rbdata)
       break;
 
       /* Finish dragging the rectangle out */
-      case ButtonRelease:
+      case XI_ButtonRelease:
         if (rbdata->pressed)
           {
             if (rbdata->rectangle.width > 0 &&
@@ -832,7 +838,7 @@ region_filter_func (GdkXEvent *xevent, GdkEvent *event, RbData *rbdata)
       break;
 
       /* The user is moving the mouse */
-      case MotionNotify:
+      case XI_Motion:
         if (rbdata->pressed)
           {
             TRACE ("Mouse is moving");
@@ -852,8 +858,9 @@ region_filter_func (GdkXEvent *xevent, GdkEvent *event, RbData *rbdata)
                                     rbdata->rectangle.height);
               }
 
-            x2 = x_event->xkey.x_root;
-            y2 = x_event->xkey.y_root;
+            device_event = (XIDeviceEvent*) x_event->xcookie.data;
+            x2 = device_event->root_x;
+            y2 = device_event->root_y;
 
             rbdata->rectangle.x = MIN (rbdata->x1, x2);
             rbdata->rectangle.y = MIN (rbdata->y1, y2);
@@ -875,8 +882,10 @@ region_filter_func (GdkXEvent *xevent, GdkEvent *event, RbData *rbdata)
         return GDK_FILTER_REMOVE;
         break;
 
-      case KeyPress:
-        if (x_event->xkey.keycode == XKeysymToKeycode (gdk_display, XK_Escape))
+      case XI_KeyPress:
+        device_event = (XIDeviceEvent*) x_event->xcookie.data;
+
+        if (device_event->detail == XKeysymToKeycode (gdk_x11_get_default_xdisplay(), XK_Escape))
           {
             TRACE ("Escape key was pressed, cancel the screenshot.");
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list