[Commits] [SCM] claws branch, master, updated. 3.16.0-157-g4e838df
wwp at claws-mail.org
wwp at claws-mail.org
Sun May 6 16:04:11 CEST 2018
The branch, master has been updated
via 4e838df8becc76c71418014572b7ce9b62e55a64 (commit)
from a7491a56de719d04e034feb2caa73c35da076c0e (commit)
Summary of changes:
src/prefs_common.c | 2 ++
src/prefs_common.h | 1 +
src/prefs_summaries.c | 12 +++++++++-
src/summaryview.c | 60 ++++++++++++++++++++++++++++++++++++++++++-------
4 files changed, 66 insertions(+), 9 deletions(-)
- Log -----------------------------------------------------------------
commit 4e838df8becc76c71418014572b7ce9b62e55a64
Author: wwp <wwp at free.fr>
Date: Sun May 6 16:02:43 2018 +0200
Make Claws Mail conservative about color labels: ask for confirmation
when user clears or override existing color labels to messages.
Confirmation dialog is discardable.
diff --git a/src/prefs_common.c b/src/prefs_common.c
index d28153b..5b646a4 100644
--- a/src/prefs_common.c
+++ b/src/prefs_common.c
@@ -876,6 +876,8 @@ static PrefParam param[] = {
{"ask_mark_all_read", "TRUE", &prefs_common.ask_mark_all_read, P_BOOL,
NULL, NULL, NULL},
+ {"ask_override_colorlabel", "TRUE", &prefs_common.ask_override_colorlabel, P_BOOL,
+ NULL, NULL, NULL},
{"ask_apply_per_account_filtering_rules", "TRUE", &prefs_common.ask_apply_per_account_filtering_rules, P_BOOL,
NULL, NULL, NULL},
diff --git a/src/prefs_common.h b/src/prefs_common.h
index 10c21b7..82e1b54 100644
--- a/src/prefs_common.h
+++ b/src/prefs_common.h
@@ -413,6 +413,7 @@ struct _PrefsCommon
#endif
int hover_timeout; /* msecs mouse hover timeout */
gboolean ask_mark_all_read;
+ gboolean ask_override_colorlabel;
gboolean ask_apply_per_account_filtering_rules;
gint apply_per_account_filtering_rules;
diff --git a/src/prefs_summaries.c b/src/prefs_summaries.c
index 304fcfe..500137f 100644
--- a/src/prefs_summaries.c
+++ b/src/prefs_summaries.c
@@ -74,6 +74,7 @@ typedef struct _SummariesPage
GtkWidget *spinbtn_mark_as_read_delay;
GtkWidget *checkbtn_immedexec;
GtkWidget *checkbtn_ask_mark_all_read;
+ GtkWidget *checkbtn_ask_override_colorlabel;
GtkWidget *optmenu_sort_key;
GtkWidget *optmenu_sort_type;
GtkWidget *optmenu_nextunreadmsgdialog;
@@ -344,6 +345,7 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
GtkAdjustment *spinbtn_mark_as_read_delay_adj;
GtkWidget *checkbtn_immedexec;
GtkWidget *checkbtn_ask_mark_all_read;
+ GtkWidget *checkbtn_ask_override_colorlabel;
GtkWidget *label, *label_fill;
GtkListStore *menu;
GtkTreeIter iter;
@@ -599,6 +601,9 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
(vbox1, checkbtn_ask_mark_all_read,
_("Confirm before marking all messages in a folder as read or unread"));
PACK_CHECK_BUTTON
+ (vbox1, checkbtn_ask_override_colorlabel,
+ _("Confirm before overriding color label of messages"));
+ PACK_CHECK_BUTTON
(vbox1, checkbtn_transhdr,
_("Translate header names"));
CLAWS_SET_TIP(checkbtn_transhdr,
@@ -625,10 +630,11 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
prefs_summaries->checkbtn_show_on_deletemove = checkbtn_show_on_deletemove;
prefs_summaries->checkbtn_show_on_directional = checkbtn_show_on_directional;
- prefs_summaries->checkbtn_mark_as_read_on_newwin = radio_mark_as_read_on_new_win;
+ prefs_summaries->checkbtn_mark_as_read_on_newwin = radio_mark_as_read_on_new_win;
prefs_summaries->spinbtn_mark_as_read_delay = spinbtn_mark_as_read_delay;
prefs_summaries->checkbtn_immedexec = checkbtn_immedexec;
prefs_summaries->checkbtn_ask_mark_all_read = checkbtn_ask_mark_all_read;
+ prefs_summaries->checkbtn_ask_override_colorlabel = checkbtn_ask_override_colorlabel;
prefs_summaries->optmenu_sort_key = optmenu_sort_key;
prefs_summaries->optmenu_sort_type = optmenu_sort_type;
prefs_summaries->optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
@@ -681,6 +687,8 @@ static void prefs_summaries_create_widget(PrefsPage *_page, GtkWindow *window,
prefs_common.immediate_exec);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_ask_mark_all_read),
prefs_common.ask_mark_all_read);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbtn_ask_override_colorlabel),
+ prefs_common.ask_override_colorlabel);
combobox_select_by_data(GTK_COMBO_BOX(optmenu_sort_key),
prefs_common.default_sort_key);
@@ -737,6 +745,8 @@ static void prefs_summaries_save(PrefsPage *_page)
GTK_TOGGLE_BUTTON(page->checkbtn_immedexec));
prefs_common.ask_mark_all_read = gtk_toggle_button_get_active(
GTK_TOGGLE_BUTTON(page->checkbtn_ask_mark_all_read));
+ prefs_common.ask_override_colorlabel = gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(page->checkbtn_ask_override_colorlabel));
prefs_common.mark_as_read_delay = gtk_spin_button_get_value_as_int(
GTK_SPIN_BUTTON(page->spinbtn_mark_as_read_delay));
diff --git a/src/summaryview.c b/src/summaryview.c
index 66a0526..f4298a9 100644
--- a/src/summaryview.c
+++ b/src/summaryview.c
@@ -4220,12 +4220,10 @@ void summary_msgs_unlock(SummaryView *summaryview)
static gboolean summary_mark_all_read_confirm(gboolean ask_if_needed)
{
- AlertValue val;
-
/* ask_if_needed is FALSE when user-asking is performed by caller,
commonly when the caller is a mark-as-read-recursive func */
if (ask_if_needed && prefs_common.ask_mark_all_read) {
- val = alertpanel_full(_("Mark all as read"),
+ AlertValue val = alertpanel_full(_("Mark all as read"),
_("Do you really want to mark all mails in this folder as read?"),
GTK_STOCK_NO, GTK_STOCK_YES, NULL, ALERTFOCUS_FIRST,
TRUE, NULL, ALERT_QUESTION);
@@ -4268,12 +4266,10 @@ void summary_mark_all_read(SummaryView *summaryview, gboolean ask_if_needed)
static gboolean summary_mark_all_unread_confirm(gboolean ask_if_needed)
{
- AlertValue val;
-
/* ask_if_needed is FALSE when user-asking is performed by caller,
commonly when the caller is a mark-as-unread-recursive func */
if (ask_if_needed && prefs_common.ask_mark_all_read) {
- val = alertpanel_full(_("Mark all as unread"),
+ AlertValue val = alertpanel_full(_("Mark all as unread"),
_("Do you really want to mark all mails in this folder as unread?"),
GTK_STOCK_NO, GTK_STOCK_YES, NULL, ALERTFOCUS_FIRST,
TRUE, NULL, ALERT_QUESTION);
@@ -4420,7 +4416,7 @@ static gboolean check_permission(SummaryView *summaryview, MsgInfo * msginfo)
}
if (!found) {
- alertpanel_error(_("You're not the author of the article.\n"));
+ alertpanel_error(_("You're not the author of the article."));
}
return found;
@@ -5916,7 +5912,7 @@ static void summary_colorlabel_menu_item_activate_cb(GtkWidget *widget,
}
/* summary_set_colorlabel_color() - labelcolor parameter is the color *flag*
- * for the messsage; not the color index */
+ * for the message; not the color index */
void summary_set_colorlabel_color(GtkCMCTree *ctree, GtkCMCTreeNode *node,
guint labelcolor)
{
@@ -5977,6 +5973,54 @@ void summary_set_colorlabel(SummaryView *summaryview, guint labelcolor,
GList *cur;
gboolean froze = FALSE;
+ if (prefs_common.ask_override_colorlabel) {
+ GtkCMCTree *ctree = GTK_CMCTREE(summaryview->ctree);
+ gboolean ask = FALSE;
+ AlertValue val;
+ guint color;
+ gboolean already_this_color_everywhere = TRUE;
+
+ /* if clearing color labels (applying 'none', 0):
+ - ask if at least one message has a non-0 color label set
+ if applying a non-0 color label:
+ - ask if at least one of the selected messages has a non-0 color label different
+ from the one we want to apply.
+ - don't ask if all messages have the same color label as the one we're applying
+ */
+ for (cur = GTK_CMCLIST(ctree)->selection;
+ !ask && cur != NULL && cur->data != NULL;
+ cur = cur->next) {
+ MsgInfo *msginfo = gtk_cmctree_node_get_row_data(ctree, GTK_CMCTREE_NODE(cur->data));
+ if (msginfo) {
+ color = MSG_GET_COLORLABEL_VALUE(msginfo->flags);
+ if (labelcolor == 0) {
+ /* clearing color labels */
+ ask = (color != 0);
+ } else {
+ already_this_color_everywhere &= (color == labelcolor);
+ ask = ((color != 0) && (color != labelcolor)) && !already_this_color_everywhere;
+ }
+ }
+ }
+
+ if (ask) {
+ gchar *msg;
+
+ if (labelcolor == 0)
+ 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,
+ GTK_STOCK_NO, GTK_STOCK_YES, NULL, ALERTFOCUS_FIRST,
+ TRUE, NULL, ALERT_QUESTION);
+
+ if ((val & ~G_ALERTDISABLE) != G_ALERTALTERNATE)
+ return;
+ else if (val & G_ALERTDISABLE)
+ prefs_common.ask_override_colorlabel = FALSE;
+ }
+ }
+
START_LONG_OPERATION(summaryview, FALSE);
for (cur = GTK_CMCLIST(ctree)->selection; cur != NULL && cur->data != NULL; cur = cur->next)
summary_set_row_colorlabel(summaryview,
-----------------------------------------------------------------------
hooks/post-receive
--
Claws Mail
More information about the Commits
mailing list