Mercurial > pidgin
changeset 12817:c0fc1e9c6768
[gaim-migrate @ 15165]
Sort the list of saved statuses alphabetically again
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Wed, 11 Jan 2006 04:40:35 +0000 |
parents | ff267281e882 |
children | 58a80d7a937a |
files | src/gtksavedstatuses.c |
diffstat | 1 files changed, 17 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/gtksavedstatuses.c Wed Jan 11 04:32:12 2006 +0000 +++ b/src/gtksavedstatuses.c Wed Jan 11 04:40:35 2006 +0000 @@ -1500,20 +1500,31 @@ g_free(title); } +static gint +saved_status_sort_alphabetically_func(gconstpointer a, gconstpointer b) +{ + const GaimSavedStatus *saved_status_a = a; + const GaimSavedStatus *saved_status_b = b; + return strcmp(gaim_savedstatus_get_title(saved_status_a), + gaim_savedstatus_get_title(saved_status_b)); +} + GtkWidget *gaim_gtk_status_menu(GaimSavedStatus *current_status, GCallback callback) { GtkWidget *combobox; - const GList *saved_statuses; + GList *sorted, *cur; int i; int index = -1; combobox = gtk_combo_box_new_text(); - for (saved_statuses = gaim_savedstatuses_get_all(), i = 0; - saved_statuses != NULL; - saved_statuses = g_list_next(saved_statuses)) + sorted = g_list_copy((GList *)gaim_savedstatuses_get_all()); + sorted = g_list_sort(sorted, saved_status_sort_alphabetically_func); + for (cur = sorted, i = 0; + cur != NULL; + cur = g_list_next(cur)) { - GaimSavedStatus *status = (GaimSavedStatus*)saved_statuses->data; + GaimSavedStatus *status = (GaimSavedStatus *)cur->data; if (!gaim_savedstatus_is_transient(status)) { gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), gaim_savedstatus_get_title(status)); @@ -1522,6 +1533,7 @@ i++; } } + g_list_free(sorted); gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), index); g_signal_connect(G_OBJECT(combobox), "changed", G_CALLBACK(status_menu_cb), callback);