diff options
Diffstat (limited to 'mdns.c')
-rw-r--r-- | mdns.c | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -543,9 +543,29 @@ static char ui_xml[] = /* ------------------------------------------------------------------ */ +static gint gtk_sort_iter_compare_str(GtkTreeModel *model, + GtkTreeIter *a, + GtkTreeIter *b, + gpointer userdata) +{ + gint sortcol = GPOINTER_TO_INT(userdata); + char *aa,*bb; + + gtk_tree_model_get(model, a, sortcol, &aa, -1); + gtk_tree_model_get(model, b, sortcol, &bb, -1); + if (NULL == aa && NULL == bb) + return 0; + if (NULL == aa) + return 1; + if (NULL == bb) + return -1; + return strcmp(aa,bb); +} + static GtkWidget *mdns_create_view(struct mdns_window *mdns) { GtkCellRenderer *renderer; + GtkTreeSortable *sortable; GtkWidget *view; view = gtk_tree_view_new(); @@ -635,6 +655,13 @@ static GtkWidget *mdns_create_view(struct mdns_window *mdns) (GTK_TREE_VIEW(view), -1, "", renderer, NULL); + sortable = GTK_TREE_SORTABLE(mdns->store); + gtk_tree_sortable_set_sort_func(sortable, ST_COL_NAME, + gtk_sort_iter_compare_str, + GINT_TO_POINTER(ST_COL_NAME), NULL); + gtk_tree_sortable_set_sort_column_id(sortable, ST_COL_NAME, + GTK_SORT_ASCENDING); + return view; } |