Mercurial > pidgin
changeset 27288:9aea1eb8aa66
Make the custom smiley edit windows single-instance. That is, if you click
Modify multiple times, you won't have multiple dialogs.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 04 Jul 2009 22:15:59 +0000 |
parents | f24a8b9d1be3 |
children | 4c55aa5aab82 |
files | pidgin/gtksmiley.c |
diffstat | 1 files changed, 7 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/pidgin/gtksmiley.c Sat Jul 04 07:54:50 2009 +0000 +++ b/pidgin/gtksmiley.c Sat Jul 04 22:15:59 2009 +0000 @@ -74,6 +74,7 @@ static void pidgin_smiley_destroy(PidginSmiley *smiley) { + g_object_set_data(G_OBJECT(smiley->smiley), "edit-dialog", NULL); gtk_widget_destroy(smiley->parent); g_free(smiley->filename); if (smiley->custom_pixbuf) @@ -402,6 +403,7 @@ smiley ? GTK_STOCK_SAVE : GTK_STOCK_ADD, GTK_RESPONSE_ACCEPT, NULL); s->parent = window; + g_object_set_data(G_OBJECT(smiley), "edit-dialog", window); gtk_container_set_border_width(GTK_CONTAINER(window), PIDGIN_HIG_BORDER); @@ -650,8 +652,12 @@ smiley_edit_iter(SmileyManager *dialog, GtkTreeIter *iter) { PurpleSmiley *smiley = NULL; + GtkWidget *window = NULL; gtk_tree_model_get(GTK_TREE_MODEL(dialog->model), iter, SMILEY, &smiley, -1); - pidgin_smiley_edit(gtk_widget_get_toplevel(GTK_WIDGET(dialog->treeview)), smiley); + if ((window = g_object_get_data(G_OBJECT(smiley), "edit-dialog")) != NULL) + gtk_window_present(GTK_WINDOW(window)); + else + pidgin_smiley_edit(gtk_widget_get_toplevel(GTK_WIDGET(dialog->treeview)), smiley); g_object_unref(G_OBJECT(smiley)); }