app: change the list of available devices to something that makes sense

Include the client pointer, its slaves, and all floating devices.
This commit is contained in:
Michael Natterer 2010-12-09 23:31:07 +01:00
parent b3ac92d0d6
commit 9e7d1206ac

View file

@ -343,6 +343,7 @@ gimp_device_manager_display_opened (GdkDisplayManager *disp_manager,
{
GimpDeviceManagerPrivate *private = GET_PRIVATE (manager);
GdkDeviceManager *gdk_manager;
GdkDevice *device;
GList *devices;
GList *list;
const gchar *display_name;
@ -362,13 +363,16 @@ gimp_device_manager_display_opened (GdkDisplayManager *disp_manager,
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);
}
@ -381,7 +385,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);
}
@ -407,6 +411,7 @@ gimp_device_manager_display_closed (GdkDisplay *gdk_display,
{
GimpDeviceManagerPrivate *private = GET_PRIVATE (manager);
GdkDeviceManager *gdk_manager;
GdkDevice *device;
GList *devices;
GList *list;
const gchar *display_name;
@ -440,12 +445,17 @@ gimp_device_manager_display_closed (GdkDisplay *gdk_display,
gimp_device_manager_display_closed,
manager);
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);
}
@ -457,7 +467,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);
}
@ -477,6 +487,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 =