diff src/img-view.c @ 89:b3149a34d0dd

Sat Oct 28 14:41:10 2006 John Ellis <johne@verizon.net> * img-view.c: Use correct method to close the window using Escape key, fixes bug #1231845. Also added more robust method to update window list when a window is closed so this doesn't happen again. * slideshow.c: Add sanity checks to exported functions to check for NULL SlideShow pointers, to match rest of coding style.
author gqview
date Sat, 28 Oct 2006 18:49:38 +0000
parents cade6a52a165
children d063f97503b7
line wrap: on
line diff
--- a/src/img-view.c	Sat Oct 28 00:03:15 2006 +0000
+++ b/src/img-view.c	Sat Oct 28 18:49:38 2006 +0000
@@ -558,7 +558,7 @@
 					}
 				else
 					{
-					gtk_widget_destroy(vw->window);
+					view_window_close(vw);
 					}
 				break;
 			case GDK_Menu:
@@ -767,15 +767,24 @@
 	if (vw->ss) slideshow_free(vw->ss);
 }
 
-static void view_window_close(ViewWindow *vw)
+static void view_window_destroy_cb(GtkWidget *widget, gpointer data)
 {
+	ViewWindow *vw = data;
+
 	view_window_list = g_list_remove(view_window_list, vw);
 
 	view_slideshow_stop(vw);
+	fullscreen_stop(vw->fs);
+
+	path_list_free(vw->list);
+	g_free(vw);
+}
+
+static void view_window_close(ViewWindow *vw)
+{
+	view_slideshow_stop(vw);
 	view_fullscreen_toggle(vw, TRUE);
 	gtk_widget_destroy(vw->window);
-	path_list_free(vw->list);
-	g_free(vw);
 }
 
 static gint view_window_delete_cb(GtkWidget *w, GdkEventAny *event, gpointer data)
@@ -832,6 +841,8 @@
 
 	view_image_set_buttons(vw, vw->imd);
 
+	g_signal_connect(G_OBJECT(vw->window), "destroy",
+			 G_CALLBACK(view_window_destroy_cb), vw);
 	g_signal_connect(G_OBJECT(vw->window), "delete_event",
 			 G_CALLBACK(view_window_delete_cb), vw);
 	g_signal_connect(G_OBJECT(vw->window), "key_press_event",