comparison 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
comparison
equal deleted inserted replaced
88:2099ee3f9a8d 89:b3149a34d0dd
556 { 556 {
557 view_fullscreen_toggle(vw, TRUE); 557 view_fullscreen_toggle(vw, TRUE);
558 } 558 }
559 else 559 else
560 { 560 {
561 gtk_widget_destroy(vw->window); 561 view_window_close(vw);
562 } 562 }
563 break; 563 break;
564 case GDK_Menu: 564 case GDK_Menu:
565 case GDK_F10: 565 case GDK_F10:
566 menu = view_popup_menu(vw); 566 menu = view_popup_menu(vw);
765 static void view_slideshow_stop(ViewWindow *vw) 765 static void view_slideshow_stop(ViewWindow *vw)
766 { 766 {
767 if (vw->ss) slideshow_free(vw->ss); 767 if (vw->ss) slideshow_free(vw->ss);
768 } 768 }
769 769
770 static void view_window_destroy_cb(GtkWidget *widget, gpointer data)
771 {
772 ViewWindow *vw = data;
773
774 view_window_list = g_list_remove(view_window_list, vw);
775
776 view_slideshow_stop(vw);
777 fullscreen_stop(vw->fs);
778
779 path_list_free(vw->list);
780 g_free(vw);
781 }
782
770 static void view_window_close(ViewWindow *vw) 783 static void view_window_close(ViewWindow *vw)
771 { 784 {
772 view_window_list = g_list_remove(view_window_list, vw);
773
774 view_slideshow_stop(vw); 785 view_slideshow_stop(vw);
775 view_fullscreen_toggle(vw, TRUE); 786 view_fullscreen_toggle(vw, TRUE);
776 gtk_widget_destroy(vw->window); 787 gtk_widget_destroy(vw->window);
777 path_list_free(vw->list);
778 g_free(vw);
779 } 788 }
780 789
781 static gint view_window_delete_cb(GtkWidget *w, GdkEventAny *event, gpointer data) 790 static gint view_window_delete_cb(GtkWidget *w, GdkEventAny *event, gpointer data)
782 { 791 {
783 ViewWindow *vw = data; 792 ViewWindow *vw = data;
830 839
831 view_window_dnd_init(vw); 840 view_window_dnd_init(vw);
832 841
833 view_image_set_buttons(vw, vw->imd); 842 view_image_set_buttons(vw, vw->imd);
834 843
844 g_signal_connect(G_OBJECT(vw->window), "destroy",
845 G_CALLBACK(view_window_destroy_cb), vw);
835 g_signal_connect(G_OBJECT(vw->window), "delete_event", 846 g_signal_connect(G_OBJECT(vw->window), "delete_event",
836 G_CALLBACK(view_window_delete_cb), vw); 847 G_CALLBACK(view_window_delete_cb), vw);
837 g_signal_connect(G_OBJECT(vw->window), "key_press_event", 848 g_signal_connect(G_OBJECT(vw->window), "key_press_event",
838 G_CALLBACK(view_window_key_press_cb), vw); 849 G_CALLBACK(view_window_key_press_cb), vw);
839 if (cd && info) 850 if (cd && info)