Filter adjustment when opening context from plugin

- Clear filter only when a plugin is selected manually.
  Plugin dir should be unfiltered when opened.
- Plugins invoked by keys don't require clearing filter
  of original context. If a new context is opened using
  the plugin, it will be unfiltered by default. If the
  same context is re-used (when all the contexts are in
  use) the filter should be cleared so the the new path
  is opened unfiltered.
This commit is contained in:
Arun Prakash Jana 2023-04-29 21:43:29 +05:30
parent 8fd1822ca6
commit 5d81aeb477

View file

@ -2992,7 +2992,7 @@ static int (*filterfn)(const fltrexp_t *fltr, const char *fname) = &visible_str;
static void clearfilter(void) static void clearfilter(void)
{ {
char *fltr = g_ctx[cfg.curctx].c_fltr; char * const fltr = g_ctx[cfg.curctx].c_fltr;
if (fltr[1]) { if (fltr[1]) {
fltr[REGEX_MAX - 1] = fltr[1]; fltr[REGEX_MAX - 1] = fltr[1];
@ -4455,6 +4455,7 @@ static void set_smart_ctx(int ctx, char *nextpath, char **path, char *file, char
ctx = (int)(get_free_ctx() + 1); ctx = (int)(get_free_ctx() + 1);
if (ctx == 0 || ctx == cfg.curctx + 1) { /* Same context */ if (ctx == 0 || ctx == cfg.curctx + 1) { /* Same context */
clearfilter();
xstrsncpy(*lastdir, *path, PATH_MAX); xstrsncpy(*lastdir, *path, PATH_MAX);
xstrsncpy(*path, nextpath, PATH_MAX); xstrsncpy(*path, nextpath, PATH_MAX);
} else { /* New context */ } else { /* New context */
@ -7898,9 +7899,9 @@ nochange:
xstrsncpy(runfile, pdents[cur].name, NAME_MAX); xstrsncpy(runfile, pdents[cur].name, NAME_MAX);
g_state.runctx = cfg.curctx; g_state.runctx = cfg.curctx;
lastname[0] = '\0'; lastname[0] = '\0';
clearfilter();
} }
setdirwatch(); setdirwatch();
clearfilter();
if (g_state.runplugin == 1) /* Allow filtering in plugins directory */ if (g_state.runplugin == 1) /* Allow filtering in plugins directory */
presel = FILTER; presel = FILTER;
goto begin; goto begin;