[gnome-settings-daemon] cursor: Handle the changed GdkDeviceManager signal
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] cursor: Handle the changed GdkDeviceManager signal
- Date: Tue, 13 Nov 2012 10:47:50 +0000 (UTC)
commit 836b321e71fd6b945b3b18bc6205dc54e3a2fefe
Author: Bastien Nocera <hadess hadess net>
Date: Tue Nov 13 07:51:42 2012 +0100
cursor: Handle the changed GdkDeviceManager signal
plugins/cursor/gsd-cursor-manager.c | 19 +++++++++++++++++++
1 files changed, 19 insertions(+), 0 deletions(-)
---
diff --git a/plugins/cursor/gsd-cursor-manager.c b/plugins/cursor/gsd-cursor-manager.c
index bf1654e..2c01ba7 100644
--- a/plugins/cursor/gsd-cursor-manager.c
+++ b/plugins/cursor/gsd-cursor-manager.c
@@ -51,6 +51,7 @@ struct GsdCursorManagerPrivate
guint start_idle_id;
guint added_id;
guint removed_id;
+ guint changed_id;
gboolean cursor_shown;
};
@@ -217,6 +218,17 @@ device_removed_cb (GdkDeviceManager *device_manager,
update_cursor_for_current (manager);
}
+static void
+device_changed_cb (GdkDeviceManager *device_manager,
+ GdkDevice *device,
+ GsdCursorManager *manager)
+{
+ if (gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_FLOATING)
+ device_removed_cb (device_manager, device, manager);
+ else
+ device_added_cb (device_manager, device, manager);
+}
+
static gboolean
supports_xfixes (void)
{
@@ -286,6 +298,8 @@ gsd_cursor_manager_idle_cb (GsdCursorManager *manager)
G_CALLBACK (device_added_cb), manager);
manager->priv->removed_id = g_signal_connect (G_OBJECT (device_manager), "device-removed",
G_CALLBACK (device_removed_cb), manager);
+ manager->priv->changed_id = g_signal_connect (G_OBJECT (device_manager), "device-changed",
+ G_CALLBACK (device_changed_cb), manager);
gnome_settings_profile_end (NULL);
@@ -325,6 +339,11 @@ gsd_cursor_manager_stop (GsdCursorManager *manager)
manager->priv->removed_id = 0;
}
+ if (manager->priv->changed_id > 0) {
+ g_signal_handler_disconnect (G_OBJECT (device_manager), manager->priv->changed_id);
+ manager->priv->changed_id = 0;
+ }
+
if (manager->priv->cursor_shown == FALSE) {
set_cursor_visibility (manager, TRUE);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]