From 7f0a8d80fdb7ad6a254bbfa5eb8af0f21f206067 Mon Sep 17 00:00:00 2001 From: hiro Date: Mon, 6 Jun 2005 11:13:04 +0000 Subject: don't use 'destroy' signal to destroy objects. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@316 ee746299-78ed-0310-b773-934348b2243d --- src/messageview.c | 23 +++++++++++++++-------- src/sourcewindow.c | 19 ++++++++++++------- 2 files changed, 27 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/messageview.c b/src/messageview.c index 63b5768e..20502142 100644 --- a/src/messageview.c +++ b/src/messageview.c @@ -66,7 +66,8 @@ static GList *messageview_list = NULL; static void messageview_change_view_type(MessageView *messageview, MessageType type); -static void messageview_destroy_cb (GtkWidget *widget, +static gint messageview_delete_cb (GtkWidget *widget, + GdkEventAny *event, MessageView *messageview); static void messageview_size_allocate_cb(GtkWidget *widget, GtkAllocation *allocation); @@ -378,8 +379,8 @@ MessageView *messageview_create_with_new_window(void) g_signal_connect(G_OBJECT(window), "size_allocate", G_CALLBACK(messageview_size_allocate_cb), msgview); - g_signal_connect(G_OBJECT(window), "destroy", - G_CALLBACK(messageview_destroy_cb), msgview); + g_signal_connect(G_OBJECT(window), "delete_event", + G_CALLBACK(messageview_delete_cb), msgview); g_signal_connect(G_OBJECT(window), "key_press_event", G_CALLBACK(key_pressed), msgview); MANAGE_WINDOW_SIGNALS_CONNECT(window); @@ -387,7 +388,6 @@ MessageView *messageview_create_with_new_window(void) n_menu_entries = sizeof(msgview_entries) / sizeof (msgview_entries[0]); menubar = menubar_create(window, msgview_entries, n_menu_entries, "", msgview); -#warning FIXME_GTK2 #if 0 menu_factory_copy_rc("
", ""); #endif @@ -535,6 +535,9 @@ void messageview_destroy(MessageView *messageview) procmsg_msginfo_free(messageview->msginfo); + if (messageview->window) + gtk_widget_destroy(messageview->window); + g_free(messageview); gtk_widget_unref(textview); @@ -660,9 +663,11 @@ void messageview_save_as(MessageView *messageview) g_free(dest); } -static void messageview_destroy_cb(GtkWidget *widget, MessageView *messageview) +static gint messageview_delete_cb(GtkWidget *widget, GdkEventAny *event, + MessageView *messageview) { messageview_destroy(messageview); + return TRUE; } static void messageview_size_allocate_cb(GtkWidget *widget, @@ -684,8 +689,10 @@ static void messageview_switch_page_cb(GtkNotebook *notebook, static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, MessageView *messageview) { - if (event && event->keyval == GDK_Escape && messageview->window) - gtk_widget_destroy(messageview->window); + if (event && event->keyval == GDK_Escape && messageview->window) { + messageview_destroy(messageview); + return TRUE; + } return FALSE; } @@ -723,7 +730,7 @@ static void print_cb(gpointer data, guint action, GtkWidget *widget) static void close_cb(gpointer data, guint action, GtkWidget *widget) { MessageView *messageview = (MessageView *)data; - gtk_widget_destroy(messageview->window); + messageview_destroy(messageview); } static void copy_cb(gpointer data, guint action, GtkWidget *widget) diff --git a/src/sourcewindow.c b/src/sourcewindow.c index b55554e0..f6eaf7e5 100644 --- a/src/sourcewindow.c +++ b/src/sourcewindow.c @@ -39,7 +39,8 @@ static void source_window_size_alloc_cb (GtkWidget *widget, GtkAllocation *allocation); -static void source_window_destroy_cb (GtkWidget *widget, +static gint source_window_delete_cb (GtkWidget *widget, + GdkEventAny *event, SourceWindow *sourcewin); static gboolean key_pressed (GtkWidget *widget, GdkEventKey *event, @@ -68,8 +69,8 @@ SourceWindow *source_window_create(void) prefs_common.sourcewin_height); g_signal_connect(G_OBJECT(window), "size_allocate", G_CALLBACK(source_window_size_alloc_cb), sourcewin); - g_signal_connect(G_OBJECT(window), "destroy", - G_CALLBACK(source_window_destroy_cb), sourcewin); + g_signal_connect(G_OBJECT(window), "delete_event", + G_CALLBACK(source_window_delete_cb), sourcewin); g_signal_connect(G_OBJECT(window), "key_press_event", G_CALLBACK(key_pressed), sourcewin); gtk_widget_realize(window); @@ -109,6 +110,7 @@ void source_window_show(SourceWindow *sourcewin) void source_window_destroy(SourceWindow *sourcewin) { + gtk_widget_destroy(sourcewin->window); g_free(sourcewin); } @@ -167,16 +169,19 @@ static void source_window_size_alloc_cb(GtkWidget *widget, prefs_common.sourcewin_height = allocation->height; } -static void source_window_destroy_cb(GtkWidget *widget, - SourceWindow *sourcewin) +static gint source_window_delete_cb(GtkWidget *widget, GdkEventAny *event, + SourceWindow *sourcewin) { source_window_destroy(sourcewin); + return TRUE; } static gboolean key_pressed(GtkWidget *widget, GdkEventKey *event, SourceWindow *sourcewin) { - if (event && event->keyval == GDK_Escape) - gtk_widget_destroy(sourcewin->window); + if (event && event->keyval == GDK_Escape) { + source_window_destroy(sourcewin); + return TRUE; + } return FALSE; } -- cgit v1.2.3