static void hide_read_messages (GtkAction *action,
gpointer data);
+static void hide_del_messages (GtkAction *action,
+ gpointer data);
static void thread_cb (GtkAction *action,
gpointer data);
gpointer data);
static void execute_summary_cb (GtkAction *action,
gpointer data);
+static void expunge_summary_cb (GtkAction *action,
+ gpointer data);
static void update_summary_cb (GtkAction *action,
gpointer data);
/* {"Tools/---", NULL, "---", NULL, NULL, NULL }, */
{"Tools/Execute", NULL, N_("E_xecute"), "X", NULL, G_CALLBACK(execute_summary_cb) },
+ {"Tools/Expunge", NULL, N_("Exp_unge"), "<control>E", NULL, G_CALLBACK(expunge_summary_cb) },
#ifdef USE_GNUTLS
/* {"Tools/---", NULL, "---", NULL, NULL, NULL }, */
{"Tools/SSLCertificates", NULL, N_("SSL cer_tificates"), NULL, NULL, G_CALLBACK(ssl_manager_open_cb) },
{"View/ShowHide/ColumnHeaders", NULL, N_("Column headers"), NULL, NULL, G_CALLBACK(toggle_col_headers_cb) }, /* toggle */
{"View/ThreadView", NULL, N_("Th_read view"), "<control>T", NULL, G_CALLBACK(thread_cb) }, /* toggle */
{"View/HideReadMessages", NULL, N_("_Hide read messages"), NULL, NULL, G_CALLBACK(hide_read_messages) }, /* toggle */
+ {"View/HideDelMessages", NULL, N_("Hide deleted messages"), NULL, NULL, G_CALLBACK(hide_del_messages) }, /* toggle */
#ifndef MAEMO
{"View/FullScreen", NULL, N_("_Fullscreen"), "F11", NULL, G_CALLBACK(toggle_fullscreen_cb) }, /* toggle */
#endif
GSList *sel;
mainwin = (MainWindow *)data;
- g_return_if_fail(mainwin != NULL);
+ cm_return_if_fail(mainwin != NULL);
sel = summary_get_selection(mainwin->summaryview);
if (!sel) return;
menu = GTK_MENU_SHELL(mainwin->colorlabel_menu);
- g_return_if_fail(menu != NULL);
+ cm_return_if_fail(menu != NULL);
Xalloca(items, (N_COLOR_LABELS + 1) * sizeof(GtkWidget *), return);
MainWindow *mainwin;
mainwin = g_object_get_data(G_OBJECT(widget), "mainwin");
- g_return_if_fail(mainwin != NULL);
+ cm_return_if_fail(mainwin != NULL);
/* "dont_toggle" state set? */
if (g_object_get_data(G_OBJECT(mainwin->colorlabel_menu),
NULL, NULL);
gint sel_len;
mainwin = (MainWindow *)data;
- g_return_if_fail(mainwin != NULL);
+ cm_return_if_fail(mainwin != NULL);
sel = summary_get_selection(mainwin->summaryview);
if (!sel) return;
menu = GTK_MENU_SHELL(mainwin->tags_menu);
- g_return_if_fail(menu != NULL);
+ cm_return_if_fail(menu != NULL);
/* NOTE: don't return prematurely because we set the "dont_toggle"
* state for check menu items */
MainWindow *mainwin;
mainwin = g_object_get_data(G_OBJECT(widget), "mainwin");
- g_return_if_fail(mainwin != NULL);
+ cm_return_if_fail(mainwin != NULL);
/* "dont_toggle" state set? */
if (g_object_get_data(G_OBJECT(mainwin->tags_menu),
MainWindow *mainwin;
mainwin = g_object_get_data(G_OBJECT(widget), "mainwin");
- g_return_if_fail(mainwin != NULL);
+ cm_return_if_fail(mainwin != NULL);
/* "dont_toggle" state set? */
if (g_object_get_data(G_OBJECT(mainwin->tags_menu),
case GDK_space:
BREAK_ON_MODIFIER_KEY();
if (gtk_window_is_active(GTK_WINDOW(mainwin->window))) {
- if (mainwin->folderview && mainwin->summaryview
+ if (mainwin->folderview != NULL && mainwin->summaryview != NULL
&& ((!mainwin->summaryview->displayed
&& !mainwin->summaryview->selected)
|| (mainwin->summaryview->folder_item
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View", "ExpandThreads", "View/ExpandThreads", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View", "CollapseThreads", "View/CollapseThreads", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View", "HideReadMessages", "View/HideReadMessages", GTK_UI_MANAGER_MENUITEM)
+ MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View", "HideDelMessages", "View/HideDelMessages", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View", "Separator3", "View/---", GTK_UI_MANAGER_SEPARATOR)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/View", "Goto", "View/Goto", GTK_UI_MANAGER_MENU)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/Tools", "Separator5", "Tools/---", GTK_UI_MANAGER_SEPARATOR)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/Tools", "Execute", "Tools/Execute", GTK_UI_MANAGER_MENUITEM)
+ MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/Tools", "Expunge", "Tools/Expunge", GTK_UI_MANAGER_MENUITEM)
#ifdef USE_GNUTLS
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/Tools", "Separator6", "Tools/---", GTK_UI_MANAGER_SEPARATOR)
MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menu/Tools", "SSLCertificates", "Tools/SSLCertificates", GTK_UI_MANAGER_MENUITEM)
/* re-create colorlabel submenu */
menu = GTK_MENU_SHELL(mainwin->colorlabel_menu);
- g_return_if_fail(menu != NULL);
+ cm_return_if_fail(menu != NULL);
/* clear items. get item pointers. */
for (cur = menu->children; cur != NULL && cur->data != NULL; cur = cur->next) {
}
/* re-create tags submenu */
menu = GTK_MENU_SHELL(mainwin->tags_menu);
- g_return_val_if_fail(menu != NULL, FALSE);
+ cm_return_val_if_fail(menu != NULL, FALSE);
/* clear items. get item pointers. */
for (cur = menu->children; cur != NULL && cur->data != NULL; cur = cur->next) {
if (imap_cancel_all_enabled())
state |= M_INC_ACTIVE;
+ if (mainwin->summaryview->deleted > 0)
+ state |= M_DELETED_EXISTS;
+
if (mainwin->summaryview->deleted > 0 ||
mainwin->summaryview->moved > 0 ||
mainwin->summaryview->copied > 0)
{"Menu/View/ExpandThreads" , M_MSG_EXIST|M_SUMMARY_ISLIST},
{"Menu/View/CollapseThreads" , M_MSG_EXIST|M_SUMMARY_ISLIST},
{"Menu/View/HideReadMessages" , M_HIDE_READ_MSG|M_SUMMARY_ISLIST},
+ {"Menu/View/HideDelMessages" , M_SUMMARY_ISLIST},
{"Menu/View/Goto/Prev" , M_MSG_EXIST},
{"Menu/View/Goto/Next" , M_MSG_EXIST},
{"Menu/View/Goto/PrevUnread" , M_MSG_EXIST},
{"Menu/Tools/ListUrls" , M_TARGET_EXIST},
{"Menu/Tools/Actions" , M_TARGET_EXIST|M_ACTIONS_EXIST},
{"Menu/Tools/Execute" , M_DELAY_EXEC},
+ {"Menu/Tools/Expunge" , M_DELETED_EXISTS},
{"Menu/Tools/ForgetSessionPasswords" , M_SESSION_PASSWORDS},
{"Menu/Tools/DeleteDuplicates/SelFolder" , M_MSG_EXIST|M_ALLOW_DELETE},
DO_ACTION("Message/Redirect", COMPOSE_REDIRECT);
DO_ACTION("Message/FollowupReply", COMPOSE_FOLLOWUP_AND_REPLY_TO);
- g_return_if_fail(msgview != NULL);
+ cm_return_if_fail(msgview != NULL);
msginfo_list = summary_get_selection(mainwin->summaryview);
- g_return_if_fail(msginfo_list != NULL);
+ cm_return_if_fail(msginfo_list != NULL);
compose_reply_from_messageview(msgview, msginfo_list, action);
g_slist_free(msginfo_list);
}
mainwin = (MainWindow *) data;
- g_return_if_fail(mainwin != NULL);
+ cm_return_if_fail(mainwin != NULL);
if (btn == GTK_BUTTON(mainwin->online_switch)) {
#ifndef GENERIC_UMPC
summary_toggle_show_read_messages(mainwin->summaryview);
}
+static void hide_del_messages (GtkAction *action, gpointer data)
+{
+ MainWindow *mainwin = (MainWindow *)data;
+ GtkWidget *menuitem = gtk_ui_manager_get_widget(mainwin->ui_manager, "/Menu/View/HideDelMessages");
+ if (!mainwin->summaryview->folder_item
+ || g_object_get_data(G_OBJECT(menuitem), "dont_toggle"))
+ return;
+ summary_toggle_show_del_messages(mainwin->summaryview);
+}
+
static void thread_cb(GtkAction *action, gpointer data)
{
MainWindow *mainwin = (MainWindow *)data;
{
MainWindow *mainwin = (MainWindow *)data;
FolderItem *item = mainwin->summaryview->folder_item;
- g_return_if_fail(item != NULL);
+ cm_return_if_fail(item != NULL);
item->processing_pending = TRUE;
folder_item_apply_processing(item);
summary_execute(mainwin->summaryview);
}
+static void expunge_summary_cb(GtkAction *action, gpointer data)
+{
+ MainWindow *mainwin = (MainWindow *)data;
+ summary_expunge(mainwin->summaryview);
+}
+
static void update_summary_cb(GtkAction *action, gpointer data)
{
MainWindow *mainwin = (MainWindow *)data;
{
SummaryView *summary;
- g_return_val_if_fail(data, FALSE);
+ cm_return_val_if_fail(data, FALSE);
if (!g_list_find(mainwin_list, data))
return TRUE;
summary = ((MainWindow *)data)->summaryview;
- g_return_val_if_fail(summary, FALSE);
+ cm_return_val_if_fail(summary, FALSE);
if (GTK_CMCLIST(summary->ctree)->selection &&
g_list_length(GTK_CMCLIST(summary->ctree)->selection) > 1)