[gimp/gtk3-port: 107/227] app: change the list of available devices to something that makes sense



commit 43f2a37a2667870d8397ea9467085da36677d3cd
Author: Michael Natterer <mitch gimp org>
Date:   Thu Dec 9 23:31:07 2010 +0100

    app: change the list of available devices to something that makes sense
    
    Include the client pointer, its slaves, and all floating devices.

 app/widgets/gimpdevicemanager.c |   24 ++++++++++++++++++------
 1 files changed, 18 insertions(+), 6 deletions(-)
---
diff --git a/app/widgets/gimpdevicemanager.c b/app/widgets/gimpdevicemanager.c
index 88a2093..8d8d0b1 100644
--- a/app/widgets/gimpdevicemanager.c
+++ b/app/widgets/gimpdevicemanager.c
@@ -284,18 +284,22 @@ gimp_device_manager_display_opened (GdkDisplayManager *disp_manager,
                                     GimpDeviceManager *manager)
 {
   GdkDeviceManager *gdk_manager;
+  GdkDevice        *device;
   GList            *devices;
   GList            *list;
 
   gdk_manager = gdk_display_get_device_manager (gdk_display);
 
+  device = gdk_device_manager_get_client_pointer (gdk_manager);
+  gimp_device_manager_device_added (gdk_manager, device, manager);
+
   devices = gdk_device_manager_list_devices (gdk_manager,
-                                             GDK_DEVICE_TYPE_MASTER);
+                                             GDK_DEVICE_TYPE_SLAVE);
 
   /*  create device info structures for present devices */
   for (list = devices; list; list = g_list_next (list))
     {
-      GdkDevice *device = list->data;
+      device = list->data;
 
       gimp_device_manager_device_added (gdk_manager, device, manager);
     }
@@ -308,7 +312,7 @@ gimp_device_manager_display_opened (GdkDisplayManager *disp_manager,
   /*  create device info structures for present devices */
   for (list = devices; list; list = g_list_next (list))
     {
-      GdkDevice *device = list->data;
+      device = list->data;
 
       gimp_device_manager_device_added (gdk_manager, device, manager);
     }
@@ -333,17 +337,21 @@ gimp_device_manager_display_closed (GdkDisplay        *gdk_display,
                                     GimpDeviceManager *manager)
 {
   GdkDeviceManager *gdk_manager;
+  GdkDevice        *device;
   GList            *devices;
   GList            *list;
 
   gdk_manager = gdk_display_get_device_manager (gdk_display);
 
+  device = gdk_device_manager_get_client_pointer (gdk_manager);
+  gimp_device_manager_device_removed (gdk_manager, device, manager);
+
   devices = gdk_device_manager_list_devices (gdk_manager,
-                                             GDK_DEVICE_TYPE_MASTER);
+                                             GDK_DEVICE_TYPE_SLAVE);
 
   for (list = devices; list; list = list->next)
     {
-      GdkDevice *device = list->data;
+      device = list->data;
 
       gimp_device_manager_device_removed (gdk_manager, device, manager);
     }
@@ -355,7 +363,7 @@ gimp_device_manager_display_closed (GdkDisplay        *gdk_display,
 
   for (list = devices; list; list = list->next)
     {
-      GdkDevice *device = list->data;
+      device = list->data;
 
       gimp_device_manager_device_removed (gdk_manager, device, manager);
     }
@@ -375,6 +383,10 @@ gimp_device_manager_device_added (GdkDeviceManager  *gdk_manager,
   if (gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
     return;
 
+  if (device != gdk_device_manager_get_client_pointer (gdk_manager) &&
+      gdk_device_get_device_type (device) == GDK_DEVICE_TYPE_MASTER)
+    return;
+
   display = gdk_device_manager_get_display (gdk_manager);
 
   device_info =


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