diff options
author | Kevin McCarthy <kevin@8t8.us> | 2022-11-19 13:20:25 -0800 |
---|---|---|
committer | Kevin McCarthy <kevin@8t8.us> | 2022-11-21 12:44:18 -0800 |
commit | 2f35d2fdb99de2f35453a2f73a64a8702f35640a (patch) | |
tree | 18f34be6f8003425de8f4345879158a7c5dc9b42 | |
parent | a60b22fe2a250f87769239b6120c2ff5de751b28 (diff) |
Reset header color after mutt_set_flag().
I partially changed this to lazily update after a thread update in
commit c9fa0414, but unfortunately didn't investigate the reason for
the color update while setting a flag. Since it was that way, I
assumed it was for a purpose.
However, it turns out there is no need to actively set the header
color in that function. Many places in Mutt already simply reset the
color values to 0 to invalidate and cause a recheck later.
Setting the color there so can even be detrimental, if the user has
slow 'color index' lines. For example doing a <tag-pattern>~A will
cause the color to be computed for the *entire* mailbox. Now, the
user ought to not have a slow color index line, but if they do, this
causes unnecessary pain.
Note that the header->color doesn't have an actual "unset" value,
which could also help performance. Maybe in the future in master
branch.
-rw-r--r-- | flags.c | 14 | ||||
-rw-r--r-- | mutt.h | 1 | ||||
-rw-r--r-- | protos.h | 2 | ||||
-rw-r--r-- | score.c | 9 |
4 files changed, 8 insertions, 18 deletions
@@ -33,7 +33,6 @@ void _mutt_set_flag (CONTEXT *ctx, HEADER *h, int flag, int bf, int upd_flags) int tagged = ctx->tagged; int flagged = ctx->flagged; int upd_ctx = (upd_flags & MUTT_SET_FLAG_UPDATE_CONTEXT); - int upd_color = (upd_flags & MUTT_SET_FLAG_UPDATE_COLOR); int update = 0; if (ctx->readonly && flag != MUTT_TAG) @@ -274,13 +273,8 @@ void _mutt_set_flag (CONTEXT *ctx, HEADER *h, int flag, int bf, int upd_flags) if (update) { - if (upd_color) - mutt_set_header_color (ctx, h); - else - { - h->color.pair = 0; - h->color.attrs = 0; - } + h->color.pair = 0; + h->color.attrs = 0; #ifdef USE_SIDEBAR mutt_set_current_menu_redraw (REDRAW_SIDEBAR); #endif @@ -326,7 +320,7 @@ int mutt_thread_set_flag (HEADER *hdr, int flag, int bf, int subthread) */ if (cur->message) { - _mutt_set_flag (Context, cur->message, flag, bf, MUTT_SET_FLAG_UPDATE_CONTEXT); + mutt_set_flag (Context, cur->message, flag, bf); cur->message->color.pair = cur->message->color.attrs = 0; } @@ -337,7 +331,7 @@ int mutt_thread_set_flag (HEADER *hdr, int flag, int bf, int subthread) { if (cur->message) { - _mutt_set_flag (Context, cur->message, flag, bf, MUTT_SET_FLAG_UPDATE_CONTEXT); + mutt_set_flag (Context, cur->message, flag, bf); cur->message->color.pair = cur->message->color.attrs = 0; } @@ -383,7 +383,6 @@ enum /* flags for _mutt_set_flag() */ #define MUTT_SET_FLAG_UPDATE_CONTEXT (1<<0) -#define MUTT_SET_FLAG_UPDATE_COLOR (1<<1) /* flags for _mutt_buffer_expand_path() */ #define MUTT_EXPAND_PATH_RX (1<<0) @@ -275,7 +275,7 @@ void _mutt_buffer_select_file (BUFFER *, int, char ***, int *); void mutt_message_hook (CONTEXT *, HEADER *, int); void mutt_reset_child_signals (void); void _mutt_set_flag (CONTEXT *, HEADER *, int, int, int); -#define mutt_set_flag(a,b,c,d) _mutt_set_flag(a,b,c,d,MUTT_SET_FLAG_UPDATE_CONTEXT|MUTT_SET_FLAG_UPDATE_COLOR) +#define mutt_set_flag(a,b,c,d) _mutt_set_flag(a,b,c,d,MUTT_SET_FLAG_UPDATE_CONTEXT) void mutt_shell_escape (void); void mutt_show_error (void); void mutt_signal_init (void); @@ -159,16 +159,13 @@ void mutt_score_message (CONTEXT *ctx, HEADER *hdr, int upd_ctx) if (hdr->score <= ScoreThresholdDelete) _mutt_set_flag (ctx, hdr, MUTT_DELETE, 1, - (upd_ctx ? MUTT_SET_FLAG_UPDATE_CONTEXT : 0) | - MUTT_SET_FLAG_UPDATE_COLOR); + upd_ctx ? MUTT_SET_FLAG_UPDATE_CONTEXT : 0); if (hdr->score <= ScoreThresholdRead) _mutt_set_flag (ctx, hdr, MUTT_READ, 1, - (upd_ctx ? MUTT_SET_FLAG_UPDATE_CONTEXT : 0) | - MUTT_SET_FLAG_UPDATE_COLOR); + upd_ctx ? MUTT_SET_FLAG_UPDATE_CONTEXT : 0); if (hdr->score >= ScoreThresholdFlag) _mutt_set_flag (ctx, hdr, MUTT_FLAG, 1, - (upd_ctx ? MUTT_SET_FLAG_UPDATE_CONTEXT : 0) | - MUTT_SET_FLAG_UPDATE_COLOR); + upd_ctx ? MUTT_SET_FLAG_UPDATE_CONTEXT : 0); } int mutt_parse_unscore (BUFFER *buf, BUFFER *s, union pointer_long_t udata, BUFFER *err) |