static void
ev_window_finalize (GObject *object)
{
- GList *windows = gtk_window_list_toplevels ();
+ gboolean empty = TRUE;
+ GList *list, *windows;
- if (windows == NULL) {
- ev_application_shutdown (EV_APP);
- } else {
- g_list_free (windows);
- }
+ windows = gtk_window_list_toplevels ();
+
+ for (list = windows; list; list = list->next) {
+ if (EV_IS_WINDOW (list->data)) {
+ empty = FALSE;
+ break;
+ }
+ }
+
+ if (empty)
+ ev_application_shutdown (EV_APP);
+
+ g_list_free (windows);
G_OBJECT_CLASS (ev_window_parent_class)->finalize (object);
}