summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdk/gdkdevice.c12
-rw-r--r--gdk/gdkdevice.h2
-rw-r--r--gdk/gdkdevicemanager.c9
-rw-r--r--gdk/gdkdeviceprivate.h4
-rw-r--r--gdk/gdkevents.c5
5 files changed, 20 insertions, 12 deletions
diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c
index d8b66f1a83..6c3832262b 100644
--- a/gdk/gdkdevice.c
+++ b/gdk/gdkdevice.c
@@ -1760,18 +1760,18 @@ gdk_device_get_last_event_window (GdkDevice *device)
}
/**
- * gdk_device_get_time:
+ * gdk_device_get_motion_time:
* @device: a #GdkDevice
*
- * Returns the timestamp of the last event involving this device that GDK has
- * received.
+ * Returns the timestamp of the last motion event involving this device
+ * that GDK has received.
*
* Returns: the timestamp of the last event for this device
*
* Since: 3.16
*/
guint32
-gdk_device_get_time (GdkDevice *device)
+gdk_device_get_motion_time (GdkDevice *device)
{
g_return_val_if_fail (GDK_IS_DEVICE (device), 0);
@@ -1779,8 +1779,8 @@ gdk_device_get_time (GdkDevice *device)
}
void
-_gdk_device_set_time (GdkDevice *device,
- guint32 time)
+_gdk_device_set_motion_time (GdkDevice *device,
+ guint32 time)
{
if (time > device->time)
{
diff --git a/gdk/gdkdevice.h b/gdk/gdkdevice.h
index 8e238ed8be..b46cc55be9 100644
--- a/gdk/gdkdevice.h
+++ b/gdk/gdkdevice.h
@@ -275,7 +275,7 @@ GDK_AVAILABLE_IN_3_12
GdkWindow *gdk_device_get_last_event_window (GdkDevice *device);
GDK_AVAILABLE_IN_3_16
-guint32 gdk_device_get_time (GdkDevice *device);
+guint32 gdk_device_get_motion_time (GdkDevice *device);
G_END_DECLS
diff --git a/gdk/gdkdevicemanager.c b/gdk/gdkdevicemanager.c
index e7e16b546e..02a6396461 100644
--- a/gdk/gdkdevicemanager.c
+++ b/gdk/gdkdevicemanager.c
@@ -186,6 +186,13 @@ gdk_device_manager_class_init (GdkDeviceManagerClass *klass)
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS));
+ /**
+ * GdkDeviceManager:current-device:
+ *
+ * The device that we have most recently seen a motion event for.
+ *
+ * Since: 3.16
+ */
g_object_class_install_property (object_class,
PROP_CURRENT_DEVICE,
g_param_spec_object ("current-device",
@@ -383,7 +390,7 @@ _gdk_device_manager_update_current_device (GdkDeviceManager *device_manager,
if (device_manager->current_device == NULL ||
device == NULL ||
- gdk_device_get_time (device) >= gdk_device_get_time (device_manager->current_device))
+ gdk_device_get_motion_time (device) >= gdk_device_get_motion_time (device_manager->current_device))
{
device_manager->current_device = device;
g_object_notify (G_OBJECT (device_manager), "current-device");
diff --git a/gdk/gdkdeviceprivate.h b/gdk/gdkdeviceprivate.h
index 53a9cbb2cb..53dc16142a 100644
--- a/gdk/gdkdeviceprivate.h
+++ b/gdk/gdkdeviceprivate.h
@@ -174,8 +174,8 @@ GdkWindow * _gdk_device_window_at_position (GdkDevice *device,
GdkModifierType *mask,
gboolean get_toplevel);
-void _gdk_device_set_time (GdkDevice *device,
- guint32 time);
+void _gdk_device_set_motion_time (GdkDevice *device,
+ guint32 time);
G_END_DECLS
diff --git a/gdk/gdkevents.c b/gdk/gdkevents.c
index 00ca18a7a7..0430f376e8 100644
--- a/gdk/gdkevents.c
+++ b/gdk/gdkevents.c
@@ -1482,6 +1482,7 @@ gdk_event_set_device (GdkEvent *event,
{
case GDK_MOTION_NOTIFY:
event->motion.device = device;
+ _gdk_device_set_motion_time (device, gdk_event_get_time (event));
break;
case GDK_BUTTON_PRESS:
case GDK_2BUTTON_PRESS:
@@ -1505,7 +1506,6 @@ gdk_event_set_device (GdkEvent *event,
default:
break;
}
- _gdk_device_set_time (device, gdk_event_get_time (event));
}
/**
@@ -1631,7 +1631,8 @@ gdk_event_set_source_device (GdkEvent *event,
private = (GdkEventPrivate *) event;
private->source_device = device;
- _gdk_device_set_time (device, gdk_event_get_time (event));
+ if (event->type == GDK_MOTION_NOTIFY)
+ _gdk_device_set_motion_time (device, gdk_event_get_time (event));
}
/**