aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--ChangeLog.ja5
-rw-r--r--src/folderview.c20
-rw-r--r--src/folderview.h2
-rw-r--r--src/summaryview.c4
5 files changed, 34 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index e0371c18..90307025 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-05-31
+
+ * src/summaryview.c: summary_show(): fixed a bug that caused crash
+ if FolderView::selected is NULL (thanks to Yann Grossel).
+ * src/folderview.[ch]: folderview_set_opened_item(): new.
+
2005-05-30
* src/manage_window.c: manage_window_focus_out(): don't reset
diff --git a/ChangeLog.ja b/ChangeLog.ja
index 2c125b16..c942d951 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,3 +1,8 @@
+2005-05-31
+
+ * src/summaryview.c: summary_show(): FolderView::selected が NULL
+ のときにクラッシュするバグを修正(Yann Grossel さん thanks)。
+
2005-05-30
* src/manage_window.c: manage_window_focus_out(): focus-out イベント
diff --git a/src/folderview.c b/src/folderview.c
index 2f6ffc2f..ad01fede 100644
--- a/src/folderview.c
+++ b/src/folderview.c
@@ -674,6 +674,26 @@ FolderItem *folderview_get_selected_item(FolderView *folderview)
return item;
}
+void folderview_set_opened_item(FolderView *folderview, FolderItem *item)
+{
+ GtkTreeModel *model = GTK_TREE_MODEL(folderview->store);
+ GtkTreeIter iter;
+ GtkTreePath *path;
+
+ gtk_tree_row_reference_free(folderview->opened);
+ folderview->opened = NULL;
+
+ if (!item)
+ return;
+
+ if (gtkut_tree_model_find_by_column_data
+ (model, &iter, NULL, COL_FOLDER_ITEM, item)) {
+ path = gtk_tree_model_get_path(model, &iter);
+ folderview->opened = gtk_tree_row_reference_new(model, path);
+ gtk_tree_path_free(path);
+ }
+}
+
void folderview_update_opened_msg_num(FolderView *folderview)
{
GtkTreePath *path;
diff --git a/src/folderview.h b/src/folderview.h
index 4205d120..91532198 100644
--- a/src/folderview.h
+++ b/src/folderview.h
@@ -79,6 +79,8 @@ void folderview_select_next_unread (FolderView *folderview);
FolderItem *folderview_get_selected_item(FolderView *folderview);
+void folderview_set_opened_item (FolderView *folderview,
+ FolderItem *item);
void folderview_update_opened_msg_num (FolderView *folderview);
gboolean folderview_append_item (FolderView *folderview,
diff --git a/src/summaryview.c b/src/summaryview.c
index aa3c28d8..dd848f9d 100644
--- a/src/summaryview.c
+++ b/src/summaryview.c
@@ -592,9 +592,7 @@ gboolean summary_show(SummaryView *summaryview, FolderItem *item,
} else
summary_write_cache(summaryview);
- gtk_tree_row_reference_free(summaryview->folderview->opened);
- summaryview->folderview->opened =
- gtk_tree_row_reference_copy(summaryview->folderview->selected);
+ folderview_set_opened_item(summaryview->folderview, item);
summary_clear_list(summaryview);
summary_set_column_titles(summaryview);