[gimp] app: sort plugged devices to the start of the list
- From: Michael Natterer <mitch src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] app: sort plugged devices to the start of the list
- Date: Sun, 14 Feb 2010 21:09:34 +0000 (UTC)
commit 3facba67d4b995aefe4241b242f39f35ec0085d0
Author: Michael Natterer <mitch gimp org>
Date: Sun Feb 14 22:08:32 2010 +0100
app: sort plugged devices to the start of the list
and sort plugged/unplugged devices alphabetically
app/widgets/gimpdeviceinfo.c | 22 ++++++++++++++++++++++
app/widgets/gimpdeviceinfo.h | 3 +++
app/widgets/gimpdevices.c | 3 +++
3 files changed, 28 insertions(+), 0 deletions(-)
---
diff --git a/app/widgets/gimpdeviceinfo.c b/app/widgets/gimpdeviceinfo.c
index 5dab018..47fcf4a 100644
--- a/app/widgets/gimpdeviceinfo.c
+++ b/app/widgets/gimpdeviceinfo.c
@@ -555,6 +555,9 @@ gimp_device_info_set_device (GimpDeviceInfo *info,
gimp_device_info_set_key (info, i,
info->keys[i].keyval,
info->keys[i].modifiers);
+
+ /* sort order depends on device presence */
+ gimp_object_name_changed (GIMP_OBJECT (info));
}
GdkInputMode
@@ -710,3 +713,22 @@ gimp_device_info_get_by_device (GdkDevice *device)
return g_object_get_data (G_OBJECT (device), GIMP_DEVICE_INFO_DATA_KEY);
}
+
+gint
+gimp_device_info_compare (GimpDeviceInfo *a,
+ GimpDeviceInfo *b)
+{
+ if (a->device && ! b->device)
+ {
+ return 1;
+ }
+ else if (! a->device && b->device)
+ {
+ return -1;
+ }
+ else
+ {
+ return - strcmp (gimp_object_get_name (a),
+ gimp_object_get_name (b));
+ }
+}
diff --git a/app/widgets/gimpdeviceinfo.h b/app/widgets/gimpdeviceinfo.h
index 0d104d2..b0a41a4 100644
--- a/app/widgets/gimpdeviceinfo.h
+++ b/app/widgets/gimpdeviceinfo.h
@@ -106,6 +106,9 @@ void gimp_device_info_changed (GimpDeviceInfo *info);
GimpDeviceInfo * gimp_device_info_get_by_device (GdkDevice *device);
+gint gimp_device_info_compare (GimpDeviceInfo *a,
+ GimpDeviceInfo *b);
+
G_END_DECLS
diff --git a/app/widgets/gimpdevices.c b/app/widgets/gimpdevices.c
index 822b7f9..4f615d2 100644
--- a/app/widgets/gimpdevices.c
+++ b/app/widgets/gimpdevices.c
@@ -112,6 +112,9 @@ gimp_devices_init (Gimp *gimp,
manager->current_device = gdk_display_get_core_pointer (gdk_display);
manager->change_notify = change_notify;
+ gimp_list_set_sort_func (GIMP_LIST (manager->device_info_list),
+ (GCompareFunc) gimp_device_info_compare);
+
displays = gdk_display_manager_list_displays (disp_manager);
/* present displays in the order in which they were opened */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]