[gtk+/xi2: 1181/1239] Add "device-manager" property to GdkDevice.



commit bc2bfdf3b5523138794b440961d7dd5718624a12
Author: Carlos Garnacho <carlos gnome org>
Date:   Fri Sep 18 00:32:49 2009 +0200

    Add "device-manager" property to GdkDevice.

 gdk/gdkdevice.c                 |   15 +++++++++++++++
 gdk/x11/gdkdevicemanager-core.c |   12 ++++++++----
 gdk/x11/gdkdevicemanager-xi2.c  |    8 +++++---
 3 files changed, 28 insertions(+), 7 deletions(-)
---
diff --git a/gdk/gdkdevice.c b/gdk/gdkdevice.c
index 4ae8b75..fb8f73a 100644
--- a/gdk/gdkdevice.c
+++ b/gdk/gdkdevice.c
@@ -43,6 +43,7 @@ struct _GdkAxisInfo
 
 struct _GdkDevicePrivate
 {
+  GdkDeviceManager *device_manager;
   GdkDisplay *display;
   GdkDevice *relative;
   GdkDeviceType type;
@@ -65,6 +66,7 @@ G_DEFINE_ABSTRACT_TYPE (GdkDevice, gdk_device, G_TYPE_OBJECT)
 enum {
   PROP_0,
   PROP_DISPLAY,
+  PROP_DEVICE_MANAGER,
   PROP_NAME,
   PROP_RELATIVE,
   PROP_TYPE,
@@ -92,6 +94,13 @@ gdk_device_class_init (GdkDeviceClass *klass)
                                                         GDK_TYPE_DISPLAY,
                                                         G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
   g_object_class_install_property (object_class,
+				   PROP_DEVICE_MANAGER,
+				   g_param_spec_object ("device-manager",
+                                                        P_("Device manager"),
+                                                        P_("Device manager to which the device belongs to"),
+                                                        GDK_TYPE_DEVICE_MANAGER,
+                                                        G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+  g_object_class_install_property (object_class,
 				   PROP_NAME,
 				   g_param_spec_string ("name",
                                                         P_("Device name"),
@@ -203,6 +212,9 @@ gdk_device_set_property (GObject      *object,
     case PROP_DISPLAY:
       priv->display = g_value_get_object (value);
       break;
+    case PROP_DEVICE_MANAGER:
+      priv->device_manager = g_value_get_object (value);
+      break;
     case PROP_NAME:
       if (device->name)
         g_free (device->name);
@@ -241,6 +253,9 @@ gdk_device_get_property (GObject    *object,
     case PROP_DISPLAY:
       g_value_set_object (value, priv->display);
       break;
+    case PROP_DEVICE_MANAGER:
+      g_value_set_object (value, priv->device_manager);
+      break;
     case PROP_RELATIVE:
       g_value_set_object (value, priv->relative);
       break;
diff --git a/gdk/x11/gdkdevicemanager-core.c b/gdk/x11/gdkdevicemanager-core.c
index 765bf23..718f119 100644
--- a/gdk/x11/gdkdevicemanager-core.c
+++ b/gdk/x11/gdkdevicemanager-core.c
@@ -69,7 +69,8 @@ gdk_device_manager_event_translator_init (GdkEventTranslatorIface *iface)
 }
 
 static GdkDevice *
-create_core_pointer (GdkDisplay *display)
+create_core_pointer (GdkDeviceManager *device_manager,
+                     GdkDisplay       *display)
 {
   return g_object_new (GDK_TYPE_DEVICE_CORE,
                        "name", "Core Pointer",
@@ -78,11 +79,13 @@ create_core_pointer (GdkDisplay *display)
                        "input-mode", GDK_MODE_SCREEN,
                        "has-cursor", TRUE,
                        "display", display,
+                       "device-manager", device_manager,
                        NULL);
 }
 
 static GdkDevice *
-create_core_keyboard (GdkDisplay *display)
+create_core_keyboard (GdkDeviceManager *device_manager,
+                      GdkDisplay       *display)
 {
   return g_object_new (GDK_TYPE_DEVICE_CORE,
                        "name", "Core Keyboard",
@@ -90,6 +93,7 @@ create_core_keyboard (GdkDisplay *display)
                        "input-source", GDK_SOURCE_KEYBOARD,
                        "has-cursor", TRUE,
                        "display", display,
+                       "device-manager", device_manager,
                        NULL);
 }
 
@@ -119,8 +123,8 @@ gdk_device_manager_core_constructed (GObject *object)
 
   device_manager = GDK_DEVICE_MANAGER_CORE (object);
   display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (object));
-  device_manager->core_pointer = create_core_pointer (display);
-  device_manager->core_keyboard = create_core_keyboard (display);
+  device_manager->core_pointer = create_core_pointer (GDK_DEVICE_MANAGER (device_manager), display);
+  device_manager->core_keyboard = create_core_keyboard (GDK_DEVICE_MANAGER (device_manager), display);
 
   _gdk_device_set_relative (device_manager->core_pointer, device_manager->core_keyboard);
   _gdk_device_set_relative (device_manager->core_keyboard, device_manager->core_pointer);
diff --git a/gdk/x11/gdkdevicemanager-xi2.c b/gdk/x11/gdkdevicemanager-xi2.c
index 01b811f..6750eef 100644
--- a/gdk/x11/gdkdevicemanager-xi2.c
+++ b/gdk/x11/gdkdevicemanager-xi2.c
@@ -164,8 +164,9 @@ translate_device_classes (GdkDisplay      *display,
 }
 
 static GdkDevice *
-create_device (GdkDisplay   *display,
-               XIDeviceInfo *dev)
+create_device (GdkDeviceManager *device_manager,
+               GdkDisplay       *display,
+               XIDeviceInfo     *dev)
 {
   GdkInputSource input_source;
   GdkDeviceType type;
@@ -215,6 +216,7 @@ create_device (GdkDisplay   *display,
                          "input-mode", (dev->use == XIMasterPointer) ? GDK_MODE_SCREEN : GDK_MODE_DISABLED,
                          "has-cursor", (dev->use == XIMasterPointer),
                          "display", display,
+                         "device-manager", device_manager,
                          "device-id", dev->deviceid,
                          NULL);
 
@@ -232,7 +234,7 @@ add_device (GdkDeviceManagerXI2 *device_manager,
   GdkDevice *device;
 
   display = gdk_device_manager_get_display (GDK_DEVICE_MANAGER (device_manager));
-  device = create_device (display, dev);
+  device = create_device (GDK_DEVICE_MANAGER (device_manager), display, dev);
 
   g_hash_table_replace (device_manager->id_table,
                         GINT_TO_POINTER (dev->deviceid),



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]