[gtk+] Select for DeviceStateNotify
- From: Alexander Larsson <alexl src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtk+] Select for DeviceStateNotify
- Date: Wed, 30 Sep 2009 07:24:04 +0000 (UTC)
commit 70bd23537f3cf78f4d17118f5249a4ea93d413a0
Author: Thomas Jaeger <ThJaeger gmail com>
Date: Tue Sep 29 02:20:40 2009 -0400
Select for DeviceStateNotify
Signed-off-by: Thomas Jaeger <ThJaeger gmail com>
https://bugzilla.gnome.org/show_bug.cgi?id=588649
gdk/x11/gdkinput-x11.c | 21 +++++++++++++++++++++
gdk/x11/gdkinputprivate.h | 2 +-
2 files changed, 22 insertions(+), 1 deletions(-)
---
diff --git a/gdk/x11/gdkinput-x11.c b/gdk/x11/gdkinput-x11.c
index d580fdb..93ff40a 100644
--- a/gdk/x11/gdkinput-x11.c
+++ b/gdk/x11/gdkinput-x11.c
@@ -278,6 +278,7 @@ _gdk_input_common_find_events (GdkDevicePrivate *gdkdev,
DeviceMotionNotify (gdkdev->xdevice, gdkdev->motionnotify_type, class);
if (class != 0)
classes[i++] = class;
+ DeviceStateNotify (gdkdev->xdevice, gdkdev->devicestatenotify_type, class);
if (class != 0)
classes[i++] = class;
}
@@ -699,6 +700,26 @@ _gdk_input_common_other_event (GdkEvent *event,
return TRUE;
}
+ if (xevent->type == gdkdev->devicestatenotify_type)
+ {
+ int i;
+ XDeviceStateNotifyEvent *xdse = (XDeviceStateNotifyEvent *)(xevent);
+ XInputClass *input_class = (XInputClass *)xdse->data;
+ for (i=0; i<xdse->num_classes; i++)
+ {
+ if (input_class->class == ValuatorClass)
+ gdk_input_update_axes (gdkdev, gdkdev->info.num_axes, 0,
+ ((XValuatorState *)input_class)->valuators);
+ input_class = (XInputClass *)(((char *)input_class)+input_class->length);
+ }
+
+ GDK_NOTE (EVENTS,
+ g_print ("device state notify:\t\twindow: %ld device: %ld\n",
+ xdse->window,
+ xdse->deviceid));
+
+ return FALSE;
+ }
if (xevent->type == gdkdev->proximityin_type ||
xevent->type == gdkdev->proximityout_type)
{
diff --git a/gdk/x11/gdkinputprivate.h b/gdk/x11/gdkinputprivate.h
index f67c8a7..1b89230 100644
--- a/gdk/x11/gdkinputprivate.h
+++ b/gdk/x11/gdkinputprivate.h
@@ -83,7 +83,7 @@ struct _GdkDevicePrivate
int buttonpress_type, buttonrelease_type, keypress_type,
keyrelease_type, motionnotify_type, proximityin_type,
- proximityout_type, changenotify_type;
+ proximityout_type, changenotify_type, devicestatenotify_type;
/* true if we need to select a different set of events, but
can't because this is the core pointer */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]