Select for DeviceStateNotify

Signed-off-by: Thomas Jaeger <ThJaeger@gmail.com>

https://bugzilla.gnome.org/show_bug.cgi?id=588649
This commit is contained in:
Thomas Jaeger 2009-09-29 02:20:40 -04:00 committed by Alexander Larsson
parent 0178ebf739
commit 70bd23537f
2 changed files with 22 additions and 1 deletions

View File

@ -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)
{

View File

@ -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 */