From 5f34ccb1fdce368b26586870fe3d2e0cf0e41dd1 Mon Sep 17 00:00:00 2001 From: David Härdeman Date: Fri, 14 Aug 2015 11:19:08 +0200 Subject: Sort the list of hardware devices --- rcm-client-hardware-list.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/rcm-client-hardware-list.c b/rcm-client-hardware-list.c index 81f0707..ec29b46 100644 --- a/rcm-client-hardware-list.c +++ b/rcm-client-hardware-list.c @@ -84,6 +84,13 @@ hardware_properties_cb(GtkButton *button, gpointer user_data) gtk_widget_hide(dialog); } +static gint +rcdev_sort(GtkListBoxRow *a, GtkListBoxRow *b, gpointer user_data) +{ + return strcmp(g_object_get_data(G_OBJECT(a), "rcdev"), + g_object_get_data(G_OBJECT(b), "rcdev")); +} + void rcng_client_hardware_list_add(GDBusObject *hw) { GList *interfaces; @@ -122,6 +129,8 @@ void rcng_client_hardware_list_add(GDBusObject *hw) rcdevice_get_hardware_type(object)); row = gtk_list_box_row_new(); + g_object_set_data_full(G_OBJECT(row), "rcdev", rcdevice_dup_sys_name(object), g_free); + box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12); gtk_widget_set_margin_top(box, 6); gtk_widget_set_margin_bottom(box, 6); @@ -165,6 +174,7 @@ void rcng_client_hardware_list_add(GDBusObject *hw) if (!hw_list_box) { hw_list_box = gtk_list_box_new(); gtk_list_box_set_selection_mode(GTK_LIST_BOX(hw_list_box), GTK_SELECTION_NONE); + gtk_list_box_set_sort_func(GTK_LIST_BOX(hw_list_box), rcdev_sort, NULL, NULL); gtk_container_add(GTK_CONTAINER(hw_list_swin), hw_list_box); gtk_widget_show_all(hw_list_swin); } -- cgit v1.2.3