[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