summaryrefslogtreecommitdiffstats
path: root/browser.c
diff options
context:
space:
mode:
authorKevin McCarthy <kevin@8t8.us>2019-10-09 08:36:59 +0800
committerKevin McCarthy <kevin@8t8.us>2019-10-09 08:36:59 +0800
commitfe69e4d1a30aabb70dc4a5890bb7188841b61421 (patch)
tree9cbddc57477ca3394078654ce27d2ae803de4389 /browser.c
parent46223bc9fe1acc40530f64775a8d5aceb5122353 (diff)
Add sticky browser behavior for sorting.
The menu isn't rebuilt after sorting, so the selected mailbox was not sticky for that operation. Refactor the sticky cursor setting out so it can be explicitly called after sorting too.
Diffstat (limited to 'browser.c')
-rw-r--r--browser.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/browser.c b/browser.c
index eb212d3e..b560c54d 100644
--- a/browser.c
+++ b/browser.c
@@ -600,11 +600,27 @@ static void folder_entry (char *s, size_t slen, MUTTMENU *menu, int num)
(unsigned long) &folder, MUTT_FORMAT_ARROWCURSOR);
}
+static void set_sticky_cursor (struct browser_state *state, MUTTMENU *menu, const char *defaultsel)
+{
+ int i;
+
+ if (option (OPTBROWSERSTICKYCURSOR) && defaultsel && *defaultsel)
+ {
+ for (i = 0; i < menu->max; i++)
+ {
+ if (!mutt_strcmp (defaultsel, state->entry[i].full_path))
+ {
+ menu->current = i;
+ break;
+ }
+ }
+ }
+}
+
static void init_menu (struct browser_state *state, MUTTMENU *menu, char *title,
size_t titlelen, int buffy, const char *defaultsel)
{
BUFFER *path = NULL;
- int i;
path = mutt_buffer_pool_get ();
@@ -636,17 +652,7 @@ static void init_menu (struct browser_state *state, MUTTMENU *menu, char *title,
}
menu->redraw = REDRAW_FULL;
- if (option (OPTBROWSERSTICKYCURSOR) && defaultsel && *defaultsel)
- {
- for (i = 0; i < menu->max; i++)
- {
- if (!mutt_strcmp (defaultsel, state->entry[i].full_path))
- {
- menu->current = i;
- break;
- }
- }
- }
+ set_sticky_cursor (state, menu, defaultsel);
mutt_buffer_pool_release (&path);
}
@@ -1290,6 +1296,7 @@ void _mutt_buffer_select_file (BUFFER *f, int flags, char ***files, int *numfile
{
BrowserSort |= reverse ? SORT_REVERSE : 0;
browser_sort (&state);
+ set_sticky_cursor (&state, menu, mutt_b2s (defaultsel));
menu->redraw = REDRAW_FULL;
}
break;