Mercurial > geeqie
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) |