aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-06-22 10:11:36 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-06-22 10:11:36 +0000
commit846fb4282b146dd4957e53b7a85003dec40d9644 (patch)
treea506db5a3f4b0ed9b2fe90601e3d736605a47801
parentf66a9433844912830bf6ef9f60fe330427659a66 (diff)
made summary columns reorderable by DnD.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@363 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r--ChangeLog4
-rw-r--r--ChangeLog.ja4
-rw-r--r--NEWS1
-rw-r--r--src/summaryview.c48
-rw-r--r--src/summaryview.h1
5 files changed, 58 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 4a273f90..b1be8775 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2005-06-22
+ * src/summaryview.[ch]: made summary columns reorderable by DnD.
+
+2005-06-22
+
* src/mh.c
src/procmsg.h
src/prefs_common.[ch]: disabled strict checking of caches by stat()
diff --git a/ChangeLog.ja b/ChangeLog.ja
index 857f5cbd..90acd276 100644
--- a/ChangeLog.ja
+++ b/ChangeLog.ja
@@ -1,5 +1,9 @@
2005-06-22
+ * src/summaryview.[ch]: DnD でサマリカラムを並べ替えられるようにした。
+
+2005-06-22
+
* src/mh.c
src/procmsg.h
src/prefs_common.[ch]: stat() によるキャッシュの厳密なチェックを
diff --git a/NEWS b/NEWS
index 6c846406..9cbf2db1 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,7 @@ Changes of Sylpheed
* The strict checking of the integrity of summary caches was disabled by
default, and the performance of displaying summary was improved.
+ * The columns of the summary view became reorderable by drag and drop.
* An option to execute command when new messages arrive was added.
* 'Add to address book' was added to the context menu of mail address
in the text view.
diff --git a/src/summaryview.c b/src/summaryview.c
index a69dde99..d933a44d 100644
--- a/src/summaryview.c
+++ b/src/summaryview.c
@@ -236,6 +236,9 @@ static void summary_row_collapsed (GtkTreeView *treeview,
GtkTreePath *path,
SummaryView *summaryview);
+static void summary_columns_changed (GtkTreeView *treeview,
+ SummaryView *summaryview);
+
static gboolean summary_select_func (GtkTreeSelection *treeview,
GtkTreeModel *model,
GtkTreePath *path,
@@ -4176,6 +4179,7 @@ static GtkWidget *summary_tree_view_create(SummaryView *summaryview)
gtk_tree_view_column_set_fixed_width(column, width); \
gtk_tree_view_column_set_min_width(column, 8); \
gtk_tree_view_column_set_sort_column_id(column, col); \
+ gtk_tree_view_column_set_reorderable(column, TRUE); \
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column); \
g_signal_connect(G_OBJECT(column->button), "clicked", \
G_CALLBACK(summary_column_clicked), \
@@ -4231,6 +4235,9 @@ static GtkWidget *summary_tree_view_create(SummaryView *summaryview)
g_signal_connect(G_OBJECT(treeview), "row-collapsed",
G_CALLBACK(summary_row_collapsed), summaryview);
+ g_signal_connect(G_OBJECT(treeview), "columns-changed",
+ G_CALLBACK(summary_columns_changed), summaryview);
+
gtk_tree_view_enable_model_drag_source
(GTK_TREE_VIEW(treeview),
0, summary_drag_types, N_DRAG_TYPES,
@@ -4253,6 +4260,9 @@ void summary_set_column_order(SummaryView *summaryview)
GtkTreeViewColumn *column, *last_column = NULL;
gint pos;
+ g_signal_handlers_block_by_func(summaryview->treeview,
+ summary_columns_changed, summaryview);
+
col_state = prefs_summary_column_get_config();
for (pos = 0; pos < N_SUMMARY_VISIBLE_COLS; pos++) {
@@ -4272,6 +4282,38 @@ void summary_set_column_order(SummaryView *summaryview)
"pos %d : type %d, vislble %d\n",
pos, type, summaryview->col_state[pos].visible);
}
+
+ g_signal_handlers_unblock_by_func(summaryview->treeview,
+ summary_columns_changed, summaryview);
+}
+
+void summary_get_column_order(SummaryView *summaryview)
+{
+ GtkTreeViewColumn *column;
+ GList *columns, *cur;
+ gint pos = 0;
+ SummaryColumnType type;
+ gboolean visible;
+
+ columns = gtk_tree_view_get_columns
+ (GTK_TREE_VIEW(summaryview->treeview));
+
+ for (cur = columns; cur != NULL && pos < N_SUMMARY_VISIBLE_COLS;
+ cur = cur->next, pos++) {
+ column = (GtkTreeViewColumn *)cur->data;
+ type = gtk_tree_view_column_get_sort_column_id(column);
+ visible = gtk_tree_view_column_get_visible(column);
+ summaryview->col_state[pos].type = type;
+ summaryview->col_state[pos].visible = visible;
+ summaryview->col_pos[type] = pos;
+ debug_print("summary_get_column_order: "
+ "pos: %d, type: %d, visible: %d\n",
+ pos, type, visible);
+ }
+
+ prefs_summary_column_set_config(summaryview->col_state);
+
+ g_list_free(columns);
}
@@ -4552,6 +4594,12 @@ static void summary_row_collapsed(GtkTreeView *treeview, GtkTreeIter *iter,
}
}
+static void summary_columns_changed(GtkTreeView *treeview,
+ SummaryView *summaryview)
+{
+ summary_get_column_order(summaryview);
+}
+
static gboolean summary_select_func(GtkTreeSelection *treeview,
GtkTreeModel *model, GtkTreePath *path,
gboolean cur_selected, gpointer data)
diff --git a/src/summaryview.h b/src/summaryview.h
index 494983d8..d644be56 100644
--- a/src/summaryview.h
+++ b/src/summaryview.h
@@ -258,5 +258,6 @@ void summary_set_colorlabel (SummaryView *summaryview,
GtkWidget *widget);
void summary_set_column_order (SummaryView *summaryview);
+void summary_get_column_order (SummaryView *summaryview);
#endif /* __SUMMARY_H__ */