diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-06-22 10:11:36 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-06-22 10:11:36 +0000 |
commit | 846fb4282b146dd4957e53b7a85003dec40d9644 (patch) | |
tree | a506db5a3f4b0ed9b2fe90601e3d736605a47801 | |
parent | f66a9433844912830bf6ef9f60fe330427659a66 (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-- | ChangeLog | 4 | ||||
-rw-r--r-- | ChangeLog.ja | 4 | ||||
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | src/summaryview.c | 48 | ||||
-rw-r--r-- | src/summaryview.h | 1 |
5 files changed, 58 insertions, 0 deletions
@@ -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() によるキャッシュの厳密なチェックを @@ -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__ */ |