# HG changeset patch # User Elliott Sales de Andrade # Date 1246745759 0 # Node ID 9aea1eb8aa66dd6b8d15fced6a01158f5fd4cd9a # Parent f24a8b9d1be3d755825ac3d658d4580b616ff64c Make the custom smiley edit windows single-instance. That is, if you click Modify multiple times, you won't have multiple dialogs. diff -r f24a8b9d1be3 -r 9aea1eb8aa66 pidgin/gtksmiley.c --- 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)); }