diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ChangeLog.ja | 5 | ||||
-rw-r--r-- | src/compose.c | 24 |
3 files changed, 19 insertions, 15 deletions
@@ -1,5 +1,10 @@ 2005-06-06 + * src/compose.c: don't use "destroy" signal to destroy Compose object + (fix rare crashes on discard?). + +2005-06-06 + * src/summaryview.c: summary_attract_by_subject() summary_sort(): clear selection list when the order of the list is diff --git a/ChangeLog.ja b/ChangeLog.ja index a053131b..2fd71bb8 100644 --- a/ChangeLog.ja +++ b/ChangeLog.ja @@ -1,5 +1,10 @@ 2005-06-06 + * src/compose.c: Compose オブジェクトの破棄に "destroy" シグナルを + 使用しないようにした(破棄時にまれにクラッシュするのを修正?)。 + +2005-06-06 + * src/summaryview.c: summary_attract_by_subject() summary_sort(): リストの順序が変更された場合選択リストをクリアする diff --git a/src/compose.c b/src/compose.c index cd3aa88c..376f1d83 100644 --- a/src/compose.c +++ b/src/compose.c @@ -371,8 +371,6 @@ static void compose_ext_editor_cb (gpointer data, static gint compose_delete_cb (GtkWidget *widget, GdkEventAny *event, gpointer data); -static void compose_destroy_cb (GtkWidget *widget, - Compose *compose); static void compose_undo_cb (Compose *compose); static void compose_redo_cb (Compose *compose); @@ -3788,8 +3786,6 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode) g_signal_connect(G_OBJECT(window), "delete_event", G_CALLBACK(compose_delete_cb), compose); - g_signal_connect(G_OBJECT(window), "destroy", - G_CALLBACK(compose_destroy_cb), compose); MANAGE_WINDOW_SIGNALS_CONNECT(window); gtk_widget_realize(window); @@ -4576,6 +4572,8 @@ static void compose_destroy(Compose *compose) gboolean valid; AttachInfo *ainfo; + compose_list = g_list_remove(compose_list, compose); + /* NOTE: address_completion_end() does nothing with the window * however this may change. */ address_completion_end(compose->window); @@ -4622,9 +4620,9 @@ static void compose_destroy(Compose *compose) gtk_widget_destroy(compose->paned); gtk_widget_destroy(compose->popupmenu); - g_free(compose); + gtk_widget_destroy(compose->window); - compose_list = g_list_remove(compose_list, compose); + g_free(compose); } static void compose_attach_info_free(AttachInfo *ainfo) @@ -5412,7 +5410,8 @@ static void compose_send_cb(gpointer data, guint action, GtkWidget *widget) val = compose_send(compose); - if (val == 0) gtk_widget_destroy(compose->window); + if (val == 0) + compose_destroy(compose); } static void compose_send_later_cb(gpointer data, guint action, @@ -5460,7 +5459,7 @@ static void compose_send_later_cb(gpointer data, guint action, if (unlink(tmp) < 0) FILE_OP_ERROR(tmp, "unlink"); - gtk_widget_destroy(compose->window); + compose_destroy(compose); } static void compose_draft_cb(gpointer data, guint action, GtkWidget *widget) @@ -5513,7 +5512,7 @@ static void compose_draft_cb(gpointer data, guint action, GtkWidget *widget) /* 0: quit editing 1: keep editing */ if (action == 0) - gtk_widget_destroy(compose->window); + compose_destroy(compose); else { struct stat s; gchar *path; @@ -5616,7 +5615,7 @@ static void compose_close_cb(gpointer data, guint action, GtkWidget *widget) } } - gtk_widget_destroy(compose->window); + compose_destroy(compose); } static void compose_set_encoding_cb(gpointer data, guint action, @@ -5665,11 +5664,6 @@ static void compose_ext_editor_cb(gpointer data, guint action, compose_exec_ext_editor(compose); } -static void compose_destroy_cb(GtkWidget *widget, Compose *compose) -{ - compose_destroy(compose); -} - static void compose_undo_cb(Compose *compose) { gboolean prev_autowrap = compose->autowrap; |