Index: src/gdict-app.c =================================================================== RCS file: /cvs/gnome/gnome-utils/gnome-dictionary/src/gdict-app.c,v retrieving revision 1.2 diff -u -p -r1.2 gdict-app.c --- src/gdict-app.c 16 Dec 2005 17:36:02 -0000 1.2 +++ src/gdict-app.c 17 Dec 2005 14:16:27 -0000 @@ -109,48 +109,26 @@ gdict_window_destroy_cb (GtkWidget *widg GSList *l; g_assert (GDICT_IS_APP (app)); - - for (l = app->windows; l != NULL; l = l->next) - { - GdictWindow *w = GDICT_WINDOW (l->data); - - if (w->window_id == window->window_id) - { - app->windows = g_slist_remove_link (app->windows, l); - g_slist_free (l); - break; - } + app->windows = g_slist_remove (app->windows, widget); + + if (GDICT_WINDOW (widget) == app->current_window) + { + app->current_window = app->windows ? app->windows->data : NULL; } - if (g_slist_length (app->windows) == 0) + if (app->windows == NULL) gtk_main_quit (); } static void -gdict_window_created_cb (GdictWindow *parent, - GdictWindow *new_window, - gpointer user_data) -{ - GdictApp *app = GDICT_APP (user_data); - - g_signal_connect (new_window, "destroy", - G_CALLBACK (gdict_window_destroy_cb), app); - - app->windows = g_slist_prepend (app->windows, new_window); - app->current_window = new_window; -} - -static void gdict_create_window (GdictApp *app) { GtkWidget *window; window = gdict_window_new (singleton->loader); GDICT_WINDOW (window)->client = app->gconf_client; - - g_signal_connect (window, "created", - G_CALLBACK (gdict_window_created_cb), app); + g_signal_connect (window, "destroy", G_CALLBACK (gdict_window_destroy_cb), app);