diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-06-06 11:13:04 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-06-06 11:13:04 +0000 |
commit | 7f0a8d80fdb7ad6a254bbfa5eb8af0f21f206067 (patch) | |
tree | 16d8e5aa74c20cf0bf29df63e57fa3491e7e68cf | |
parent | 5db09c44a0879e21a41615a05b6a72f5c2b319d5 (diff) |
don't use 'destroy' signal to destroy objects.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@316 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ChangeLog.ja | 6 | ||||
-rw-r--r-- | src/messageview.c | 23 | ||||
-rw-r--r-- | src/sourcewindow.c | 19 |
4 files changed, 38 insertions, 15 deletions
@@ -1,5 +1,10 @@ 2005-06-06 + * src/mimeview.c + src/sourcewindow.c: don't use "destroy" signal to destroy objects. + +2005-06-06 + * src/compose.c: don't use "destroy" signal to destroy Compose object (fix rare crashes on discard?). diff --git a/ChangeLog.ja b/ChangeLog.ja index 2fd71bb8..cae884c4 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,5 +1,11 @@ 2005-06-06 + * src/mimeview.c + src/sourcewindow.c: オブジェクトの破棄に "destroy" シグナルを使用 + しないようにした。 + +2005-06-06 + * src/compose.c: Compose オブジェクトの破棄に "destroy" シグナルを 使用しないようにした(破棄時にまれにクラッシュするのを修正?)。 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, "<MessageView>", msgview); -#warning FIXME_GTK2 #if 0 menu_factory_copy_rc("<Main>", "<MessageView>"); #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; } |