# HG changeset patch # User Luke Schierer # Date 1084511068 0 # Node ID 755d7f8907c662dbe984fc6664548812f9ba5f6b # Parent 5dd21fa59de379a2eec6f40ba03c327398e3c433 [gaim-migrate @ 9698] " This patch creates a custom sort function that will sort the "none" theme, if found, at the top of the Smiley Themes list. Luke and I thought it was good idea to do so. I also had to add just the theme name to the tree list since the other field had the name, author, and description all marked up, which would be stupid to try and sort. This way I can just look for "none"" --Don Seiler committer: Tailor Script diff -r 5dd21fa59de3 -r 755d7f8907c6 src/gtkprefs.c --- a/src/gtkprefs.c Fri May 14 02:06:28 2004 +0000 +++ b/src/gtkprefs.c Fri May 14 05:04:28 2004 +0000 @@ -462,6 +462,7 @@ 0, pixbuf, 1, description, 2, theme->path, + 3, theme->name, -1); if (pixbuf != NULL) @@ -586,6 +587,37 @@ gtk_drag_finish(dc, FALSE, FALSE, t); } +/* Does same as normal sort, except "none" is sorted first */ +gint gaim_sort_smileys (GtkTreeModel *model, + GtkTreeIter *a, + GtkTreeIter *b, + gpointer userdata) +{ + gaim_debug_info("gaim_sort_smileys","entered\n"); + gint ret = 0; + gchar *name1, *name2; + + gtk_tree_model_get(model, a, 3, &name1, -1); + gtk_tree_model_get(model, b, 3, &name2, -1); + + if (name1 == NULL || name2 == NULL) { + if (!(name1 == NULL && name2 == NULL)) + ret = (name1 == NULL) ? -1: 1; + } else if (!g_ascii_strcasecmp(name1, "none")) { + /* Sort name1 first */ + ret = -1; + } else if (!g_ascii_strcasecmp(name2, "none")) { + /* Sort name2 first */ + ret = 1; + } else { + /* Neither string is "none", default to normal sort */ + ret = g_utf8_collate(name1,name2); + } + + gaim_debug_info("gaim_sort_smileys","leaving\n"); + return ret; +} + GtkWidget *theme_page() { GtkWidget *ret; GtkWidget *sw; @@ -614,7 +646,7 @@ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0); - smiley_theme_store = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING); + smiley_theme_store = gtk_list_store_new (4, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); path = theme_refresh_theme_list(); @@ -632,8 +664,13 @@ gtk_tree_selection_select_path(sel, path); gtk_tree_path_free(path); } + + /* Custom sort so "none" theme is at top of list */ + gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(smiley_theme_store), + 3, gaim_sort_smileys, NULL, NULL); + gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(smiley_theme_store), - 1, GTK_SORT_ASCENDING); + 3, GTK_SORT_ASCENDING); col = gtk_tree_view_column_new_with_attributes (_("Icon"), rend,