void summary_simplify_subject(SummaryView *summaryview, gchar * rexp,
GSList * mlist);
-static void summary_filter_func (MsgInfo *msginfo);
+static void summary_filter_func (MsgInfo *msginfo,
+ PrefsAccount *ac_prefs);
static void summary_colorlabel_menu_item_activate_cb
(GtkWidget *widget,
{"claws-mail/msg-path-list", 0, TARGET_MAIL_CM_PATH_LIST},
};
+static void summary_reedit_cb(GtkAction *gaction, gpointer data);
static void summary_reply_cb(GtkAction *gaction, gpointer data);
/* Only submenus and specifically-handled menu entries here */
static GtkActionEntry summary_popup_entries[] =
{
{"SummaryViewPopup", NULL, "SummaryViewPopup", NULL, NULL, NULL },
+ {"SummaryViewPopup/Reedit", NULL, N_("Re-edit"), NULL, NULL, G_CALLBACK(summary_reedit_cb) },
{"SummaryViewPopup/Reply", NULL, N_("_Reply"), NULL, NULL, G_CALLBACK(summary_reply_cb) }, /* COMPOSE_REPLY */
{"SummaryViewPopup/ReplyTo", NULL, N_("Repl_y to"), NULL, NULL, NULL },
{"SummaryViewPopup/ReplyTo/All", NULL, N_("_All"), NULL, NULL, G_CALLBACK(summary_reply_cb) }, /* COMPOSE_REPLY_TO_ALL */
{"SummaryViewPopup/View", NULL, N_("_View"), NULL, NULL, NULL },
};
+static void summary_header_lock_sorting_cb(GtkAction *gaction, gpointer data);
+static void summary_header_set_displayed_columns_cb(GtkAction *gaction, gpointer data);
+
+static GtkActionEntry summary_header_popup_entries[] =
+{
+ {"SummaryViewHeaderPopup", NULL, "SummaryViewHeaderPopup", NULL, NULL, NULL },
+ {"SummaryViewHeaderPopup/SetDisplayedColumns", NULL, N_("_Set displayed columns"), NULL, NULL, G_CALLBACK(summary_header_set_displayed_columns_cb) }
+};
+
+static GtkToggleActionEntry summary_header_popup_toggle_entries[] =
+{
+ {"SummaryViewHeaderPopup/LockColumnHeaders", NULL, N_("_Lock column headers"), NULL, NULL, G_CALLBACK(summary_header_lock_sorting_cb), FALSE }
+};
+
static const gchar *const col_label[N_SUMMARY_COLS] = {
"", /* S_COL_MARK */
N_("S"), /* S_COL_STATUS */
summary_update_msg, (gpointer) summaryview); \
}
+static void popup_menu_selection_done(GtkMenuShell *shell, gpointer user_data)
+{
+ SummaryView *summaryview = (SummaryView *)user_data;
+
+ cm_return_if_fail(summaryview != NULL);
+
+ /* If a message is displayed, place cursor back on the message. */
+ if (summaryview->displayed != NULL &&
+ summaryview->displayed != summaryview->selected) {
+ gtk_sctree_select(GTK_SCTREE(summaryview->ctree), summaryview->displayed);
+ }
+}
+
SummaryView *summary_create(MainWindow *mainwin)
{
SummaryView *summaryview;
/* create popup menu */
- gtk_action_group_add_actions(mainwin->action_group, summary_popup_entries,
- G_N_ELEMENTS(summary_popup_entries), (gpointer)summaryview);
+ gtk_action_group_add_actions(mainwin->action_group,
+ summary_popup_entries,
+ G_N_ELEMENTS(summary_popup_entries),
+ (gpointer)summaryview);
+
+ gtk_action_group_add_actions(mainwin->action_group,
+ summary_header_popup_entries,
+ G_N_ELEMENTS(summary_header_popup_entries),
+ (gpointer)summaryview);
+
+ gtk_action_group_add_toggle_actions(mainwin->action_group,
+ summary_header_popup_toggle_entries,
+ G_N_ELEMENTS(summary_header_popup_toggle_entries),
+ (gpointer)summaryview);
summaryview->ui_manager = gtk_ui_manager_new();
summaryview->action_group = cm_menu_create_action_group_full(summaryview->ui_manager,"Menu", summary_popup_entries,
G_N_ELEMENTS(summary_popup_entries), (gpointer)summaryview);
- MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/", "Menus", "Menus", GTK_UI_MANAGER_MENUBAR)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus", "SummaryViewPopup", "SummaryViewPopup", GTK_UI_MANAGER_MENU)
+ MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Reedit", "SummaryViewPopup/Reedit", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Reply", "SummaryViewPopup/Reply", GTK_UI_MANAGER_MENUITEM)
#ifndef GENERIC_UMPC
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "ReplyTo", "SummaryViewPopup/ReplyTo", GTK_UI_MANAGER_MENU)
#ifndef GENERIC_UMPC
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/View", "AllHeaders", "View/AllHeaders", GTK_UI_MANAGER_MENUITEM)
#endif
+
+ MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus", "SummaryViewHeaderPopup", "SummaryViewHeaderPopup", GTK_UI_MANAGER_MENU)
+ MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewHeaderPopup", "LockColumnHeaders", "SummaryViewHeaderPopup/LockColumnHeaders", GTK_UI_MANAGER_MENUITEM)
+ MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewHeaderPopup", "SetDisplayedColumns", "SummaryViewHeaderPopup/SetDisplayedColumns", GTK_UI_MANAGER_MENUITEM)
+
summaryview->popupmenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(
gtk_ui_manager_get_widget(mainwin->ui_manager, "/Menus/SummaryViewPopup")) );
-
+ summaryview->headerpopupmenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(
+ gtk_ui_manager_get_widget(mainwin->ui_manager, "/Menus/SummaryViewHeaderPopup")) );
summaryview->vbox = vbox;
summaryview->scrolledwin = scrolledwin;
main_create_mailing_list_menu (summaryview->mainwin, NULL);
summary_set_menu_sensitive(summaryview);
+ summaryview->header_menu_lock = FALSE;
}
#define CURRENTLY_DISPLAYED(m) \
g_slist_free(mlist);
- if (is_refresh) {
- if (!quicksearch_is_in_typing(summaryview->quicksearch)) {
- summaryview->displayed =
- summary_find_msg_by_msgnum(summaryview,
- displayed_msgnum);
- if (!summaryview->displayed)
- messageview_clear(summaryview->messageview);
+ if (quicksearch_is_in_typing(summaryview->quicksearch) ||
+ quicksearch_is_running(summaryview->quicksearch)) {
+ summaryview->displayed =
+ summary_find_msg_by_msgnum(summaryview,
+ displayed_msgnum);
+ if (!summaryview->displayed)
+ messageview_clear(summaryview->messageview);
+ summary_unlock(summaryview);
+
+ if (quicksearch_is_running(summaryview->quicksearch))
+ summary_select_by_msgnum(summaryview, selected_msgnum,
+ OPEN_SELECTED_ON_SEARCH_RESULTS);
+ else
+ summary_select_by_msgnum(summaryview, selected_msgnum,
+ FALSE);
+
+ summary_lock(summaryview);
+ if (!summaryview->selected) {
+ /* no selected message - select first unread
+ message, but do not display it */
+ node = summary_find_next_flagged_msg(summaryview, NULL,
+ MSG_UNREAD, FALSE);
+ if (node == NULL && GTK_CMCLIST(ctree)->row_list != NULL)
+ node = gtk_cmctree_node_nth
+ (ctree,
+ item->sort_type == SORT_DESCENDING
+ ? 0 : GTK_CMCLIST(ctree)->rows - 1);
summary_unlock(summaryview);
if (quicksearch_is_running(summaryview->quicksearch))
- summary_select_by_msgnum(summaryview, selected_msgnum,
+ summary_select_node(summaryview, node,
OPEN_SELECTED_ON_SEARCH_RESULTS);
else
- summary_select_by_msgnum(summaryview, selected_msgnum,
+ summary_select_node(summaryview, node,
OPEN_SELECTED_ON_FOLDER_OPEN);
summary_lock(summaryview);
- if (!summaryview->selected) {
- /* no selected message - select first unread
- message, but do not display it */
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_UNREAD, FALSE);
- if (node == NULL && GTK_CMCLIST(ctree)->row_list != NULL)
- node = gtk_cmctree_node_nth
- (ctree,
- item->sort_type == SORT_DESCENDING
- ? 0 : GTK_CMCLIST(ctree)->rows - 1);
- summary_unlock(summaryview);
-
- if (quicksearch_is_running(summaryview->quicksearch))
- summary_select_node(summaryview, node,
- OPEN_SELECTED_ON_SEARCH_RESULTS);
- else
- summary_select_node(summaryview, node,
- OPEN_SELECTED_ON_FOLDER_OPEN);
-
- summary_lock(summaryview);
- }
- } else {
- /* just select first/last */
- if (GTK_CMCLIST(ctree)->row_list != NULL)
- node = gtk_cmctree_node_nth
- (ctree,
- item->sort_type == SORT_DESCENDING
- ? 0 : GTK_CMCLIST(ctree)->rows - 1);
- summary_select_node(summaryview, node, OPEN_SELECTED_ON_SEARCH_RESULTS);
}
} else {
/* backward compat */
if (node) {
gint open_selected = -1;
- if (!is_refresh) {
- if (OPEN_SELECTED_ON_FOLDER_OPEN)
- open_selected = 1;
- else
- open_selected = 0;
- }
+ if (OPEN_SELECTED_ON_FOLDER_OPEN)
+ open_selected = 1;
+ else
+ open_selected = 0;
summary_select_node(summaryview, node, open_selected);
}
for (cur = GTK_CMCLIST(summaryview->ctree)->selection; cur != NULL && cur->data != NULL;
cur = cur->next) {
msginfo = GTKUT_CTREE_NODE_GET_ROW_DATA(cur->data);
- mlist = g_slist_prepend(mlist, msginfo);
+ mlist = g_slist_prepend(mlist,
+ procmsg_msginfo_new_ref(msginfo));
}
mlist = g_slist_reverse(mlist);
gint i;
#ifndef GENERIC_UMPC
-#define N_ENTRIES 39
+#define N_ENTRIES 40
#else
-#define N_ENTRIES 28
+#define N_ENTRIES 29
#endif
static struct {
const gchar *entry;
entry[i].entry = (const gchar *) entry_str; entry[i++].cond = main_window_get_mask(__VA_ARGS__, -1); \
} while (0)
+ FILL_TABLE("Menus/SummaryViewPopup/Reedit", M_TARGET_EXIST, M_DRAFT);
FILL_TABLE("Menus/SummaryViewPopup/Reply", M_HAVE_ACCOUNT, M_TARGET_EXIST);
#ifndef GENERIC_UMPC
FILL_TABLE("Menus/SummaryViewPopup/ReplyTo", M_HAVE_ACCOUNT, M_TARGET_EXIST);
summary_lock(summaryview);
GTK_EVENTS_FLUSH();
summary_unlock(summaryview);
- gtk_widget_grab_focus(GTK_WIDGET(ctree));
+
+ /* If quicksearch has focus, let's keep it there. */
+ if (!quicksearch_has_focus(summaryview->quicksearch))
+ summary_grab_focus(summaryview);
+
gtkut_ctree_node_move_if_on_the_edge(ctree, node, -1);
if (display_msg && summaryview->displayed == node)
n_new, n_unread, n_total,
to_human_readable((goffset)n_size));
+ g_signal_connect(G_OBJECT(summaryview->popupmenu), "selection-done",
+ G_CALLBACK(popup_menu_selection_done), summaryview);
gtk_label_set_text(GTK_LABEL(summaryview->statlabel_msgs), str);
g_free(str);
static gchar date_modified[80];
static gchar col_score[11];
static gchar from_buf[BUFFSIZE], to_buf[BUFFSIZE];
- static gchar tmp1[BUFFSIZE], tmp2[BUFFSIZE], tmp3[BUFFSIZE];
+ static gchar tmp1[BUFFSIZE], tmp2[BUFFSIZE+4], tmp3[BUFFSIZE];
gint *col_pos = summaryview->col_pos;
gchar *from_text = NULL, *to_text = NULL, *tags_text = NULL;
gboolean should_swap = FALSE;
to_text = to_text ? to_text : _("(No From)");
}
}
- snprintf(tmp2, BUFFSIZE-1, "➜ %s", to_text);
+ snprintf(tmp2, BUFFSIZE+4, "➜ %s", to_text);
tmp2[BUFFSIZE-1]='\0';
text[col_pos[S_COL_FROM]] = tmp2;
}
}
static gboolean defer_change(gpointer data);
+typedef enum {
+ FLAGS_UNSET,
+ FLAGS_SET,
+ FLAGS_CHANGE
+} ChangeType;
typedef struct _ChangeData {
MsgInfo *info;
- gint op; /* 0, 1, 2 for unset, set, change */
+ ChangeType op;
MsgPermFlags set_flags;
MsgTmpFlags set_tmp_flags;
MsgPermFlags unset_flags;
} else {
ChangeData *unset_data = g_new0(ChangeData, 1);
unset_data->info = msginfo;
- unset_data->op = 0;
+ unset_data->op = FLAGS_UNSET;
unset_data->unset_flags = flags;
unset_data->unset_tmp_flags = tmp_flags;
debug_print("flags: deferring unset\n");
} else {
ChangeData *set_data = g_new0(ChangeData, 1);
set_data->info = msginfo;
- set_data->op = 1;
+ set_data->op = FLAGS_SET;
set_data->set_flags = flags;
set_data->set_tmp_flags = tmp_flags;
debug_print("flags: deferring set\n");
} else {
ChangeData *change_data = g_new0(ChangeData, 1);
change_data->info = msginfo;
- change_data->op = 2;
+ change_data->op = FLAGS_CHANGE;
change_data->set_flags = add_flags;
change_data->set_tmp_flags = add_tmp_flags;
change_data->unset_flags = rem_flags;
} else {
debug_print("flags: finally doing it\n");
switch(chg->op) {
- case 0:
+ case FLAGS_UNSET:
procmsg_msginfo_unset_flags(chg->info, chg->unset_flags, chg->unset_tmp_flags);
break;
- case 1:
+ case FLAGS_SET:
procmsg_msginfo_set_flags(chg->info, chg->set_flags, chg->set_tmp_flags);
break;
- case 2:
+ case FLAGS_CHANGE:
procmsg_msginfo_change_flags(chg->info, chg->set_flags, chg->set_tmp_flags,
chg->unset_flags, chg->unset_tmp_flags);
break;
if (summary_is_locked(summaryview))
return;
- if ((summaryview->folder_item->total_msgs == (gint)g_list_length(GTK_CMCLIST(ctree)->selection))
- && !summary_mark_all_read_confirm(TRUE))
+ if ((summaryview->folder_item->total_msgs == (gint)g_list_length(GTK_CMCLIST(ctree)->selection) &&
+ summaryview->folder_item->total_msgs > 1) &&
+ !summary_mark_all_read_confirm(TRUE))
return;
START_LONG_OPERATION(summaryview, FALSE);
if (summary_is_locked(summaryview))
return;
- if ((summaryview->folder_item->total_msgs == (gint)g_list_length(GTK_CMCLIST(ctree)->selection))
- && !summary_mark_all_unread_confirm(TRUE))
+ if ((summaryview->folder_item->total_msgs == (gint)g_list_length(GTK_CMCLIST(ctree)->selection) &&
+ summaryview->folder_item->total_msgs > 1) &&
+ !summary_mark_all_unread_confirm(TRUE))
return;
START_LONG_OPERATION(summaryview, FALSE);
gchar *filename = NULL;
gchar *src, *dest;
gchar *tmp;
+ gchar *filedir = NULL;
AlertValue aval = 0;
g_warning("summary_save_as(): failed to convert character set.");
filename = g_strdup(oldstr);
}
- dest = filesel_select_file_save(_("Save as"), filename);
+ dest = filename;
g_free(filename);
} else
- dest = filesel_select_file_save(_("Save as"), filename);
+ dest = filename;
filename = NULL;
if (!dest) return;
+ if (prefs_common.attach_save_dir && *prefs_common.attach_save_dir)
+ dest = g_strconcat(prefs_common.attach_save_dir, G_DIR_SEPARATOR_S,
+ dest, NULL);
+ dest = filesel_select_file_save(_("Save as"), dest);
+ if (!dest) return;
+
if (is_file_exist(dest)) {
aval = alertpanel(_("Append or Overwrite"),
_("Append or overwrite existing file?"),
}
g_free(src);
}
+
+ filedir = g_path_get_dirname(dest);
+ if (filedir && strcmp(filedir, ".")) {
+ g_free(prefs_common.attach_save_dir);
+ prefs_common.attach_save_dir = g_filename_to_utf8(filedir, -1, NULL, NULL, NULL);
+ }
+
g_free(dest);
g_free(tmp);
}
void summary_filter(SummaryView *summaryview, gboolean selected_only)
{
GSList *mlist = NULL, *cur_list;
+ PrefsAccount *ac_prefs = NULL;
summary_lock(summaryview);
/* are there any per-account filtering rules? */
mlist = folder_item_get_msg_list(summaryview->folder_item);
}
+ ac_prefs = ((summaryview->folder_item->folder != NULL) &&
+ (summaryview->folder_item->folder->account != NULL))
+ ? summaryview->folder_item->folder->account : NULL;
+
folder_item_set_batch(summaryview->folder_item, TRUE);
for (cur_list = mlist; cur_list; cur_list = cur_list->next) {
- summary_filter_func((MsgInfo *)cur_list->data);
+ summary_filter_func((MsgInfo *)cur_list->data, ac_prefs);
}
folder_item_set_batch(summaryview->folder_item, FALSE);
summary_show(summaryview, summaryview->folder_item);
}
-static void summary_filter_func(MsgInfo *msginfo)
+static void summary_filter_func(MsgInfo *msginfo, PrefsAccount *ac_prefs)
{
MailFilteringData mail_filtering_data;
if (hooks_invoke(MAIL_MANUAL_FILTERING_HOOKLIST, &mail_filtering_data))
return;
- filter_message_by_msginfo(filtering_rules, msginfo, NULL,
+ filter_message_by_msginfo(filtering_rules, msginfo, ac_prefs,
FILTERING_MANUALLY, NULL);
}
msg = _("Do you really want to reset the color label of all selected messages?");
else
msg = _("Do you really want to apply this color label to all selected messages?");
- val = alertpanel_full(_("Set color label"), msg,
+ val = alertpanel_full(labelcolor == 0? _("Reset color label"): _("Set color label"), msg,
GTK_STOCK_NO, GTK_STOCK_YES, NULL, ALERTFOCUS_FIRST,
TRUE, NULL, ALERT_QUESTION);
return TRUE;
}
#endif
+
+static gboolean summary_header_button_pressed(GtkWidget *widget,
+ GdkEvent *_event,
+ gpointer user_data)
+{
+ GdkEventButton *event = (GdkEventButton *)_event;
+ SummaryView *summaryview = (SummaryView *)user_data;
+
+ cm_return_val_if_fail(summaryview != NULL, FALSE);
+
+ /* Only handle single button presses. */
+ if (event->type == GDK_2BUTTON_PRESS ||
+ event->type == GDK_3BUTTON_PRESS)
+ return FALSE;
+
+ /* Handle right-click for context menu */
+ if (event->button == 3) {
+ /* Set up any menu items that need setting up. */
+ summaryview->header_menu_lock = TRUE;
+ cm_toggle_menu_set_active_full(summaryview->mainwin->ui_manager,
+ "Menus/SummaryViewHeaderPopup/LockColumnHeaders",
+ prefs_common_get_prefs()->summary_col_lock);
+ summaryview->header_menu_lock = FALSE;
+
+ gtk_menu_popup(GTK_MENU(summaryview->headerpopupmenu),
+ NULL, NULL, NULL, NULL, 3, event->time);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static GtkWidget *summary_ctree_create(SummaryView *summaryview)
{
GtkWidget *ctree;
/* connect signal to the buttons for sorting */
#define CLIST_BUTTON_SIGNAL_CONNECT(col, func) \
+ g_signal_connect \
+ (G_OBJECT(GTK_CMCLIST(ctree)->column[col_pos[col]].button), \
+ "button-press-event", \
+ G_CALLBACK(summary_header_button_pressed), \
+ summaryview); \
g_signal_connect \
(G_OBJECT(GTK_CMCLIST(ctree)->column[col_pos[col]].button), \
"clicked", \
G_CALLBACK(func), \
- summaryview)
-
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_MARK , summary_mark_clicked);
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_STATUS , summary_status_clicked);
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_MIME , summary_mime_clicked);
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_NUMBER , summary_num_clicked);
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_SIZE , summary_size_clicked);
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_DATE , summary_date_clicked);
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_FROM , summary_from_clicked);
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_TO , summary_to_clicked);
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_SUBJECT, summary_subject_clicked);
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_SCORE, summary_score_clicked);
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_LOCKED, summary_locked_clicked);
- CLIST_BUTTON_SIGNAL_CONNECT(S_COL_TAGS, summary_tags_clicked);
+ summaryview);
+
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_MARK , summary_mark_clicked)
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_STATUS , summary_status_clicked)
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_MIME , summary_mime_clicked)
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_NUMBER , summary_num_clicked)
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_SIZE , summary_size_clicked)
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_DATE , summary_date_clicked)
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_FROM , summary_from_clicked)
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_TO , summary_to_clicked)
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_SUBJECT, summary_subject_clicked)
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_SCORE , summary_score_clicked)
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_LOCKED , summary_locked_clicked)
+ CLIST_BUTTON_SIGNAL_CONNECT(S_COL_TAGS , summary_tags_clicked)
#undef CLIST_BUTTON_SIGNAL_CONNECT
SummaryView *summaryview)
{
if (!event) return FALSE;
+ if (event->window != GTK_CMCLIST(ctree)->clist_window) return FALSE;
if (event->button == 3) {
/* right clicked */
static void summary_sort_by_column_click(SummaryView *summaryview,
FolderSortKey sort_key)
{
+ if (prefs_common.summary_col_lock) {
+ debug_print("summaryview columns locked, ignoring\n");
+ return;
+ }
+
GtkCMCTreeNode *node = NULL;
START_TIMING("");
if (summaryview->sort_key == sort_key)
gtk_widget_set_sensitive(summaryview->ctree, TRUE);
}
+static void summary_reedit_cb(GtkAction *gaction, gpointer data)
+{
+ SummaryView *summaryview = (SummaryView *)data;
+ summary_reedit(summaryview);
+}
+
#define DO_ACTION(name, act) { if (!strcmp(a_name, name)) action = act; }
static void summary_reply_cb(GtkAction *gaction, gpointer data)
{
return (summaryview->displayed != NULL);
}
+static void summary_header_lock_sorting_cb(GtkAction *gaction, gpointer data)
+{
+ SummaryView *summaryview = (SummaryView *)data;
+ gboolean sorting_lock = prefs_common_get_prefs()->summary_col_lock;
+
+ if (summaryview->header_menu_lock)
+ return;
+
+ debug_print("%slocking summaryview columns\n",
+ sorting_lock ? "un" : "");
+ prefs_common_get_prefs()->summary_col_lock = !sorting_lock;
+}
+
+static void summary_header_set_displayed_columns_cb(GtkAction *gaction,
+ gpointer data)
+{
+ SummaryView *summaryview = (SummaryView *)data;
+
+ if (summaryview->header_menu_lock)
+ return;
+
+ prefs_summary_column_open();
+}