diff options
author | Arun Prakash Jana <engineerarun@gmail.com> | 2020-03-31 02:32:13 +0530 |
---|---|---|
committer | Arun Prakash Jana <engineerarun@gmail.com> | 2020-03-31 03:44:52 +0530 |
commit | 2d27902ac0e4f31c58d08aff3ba10f6a6d6af8e3 (patch) | |
tree | 6be99eff979ba48a63acec68bd8505cd4fbbdb2e /src | |
parent | eea1b5da7da4ed9838e647dfae4d56aaba372ad8 (diff) | |
download | nnn-2d27902ac0e4f31c58d08aff3ba10f6a6d6af8e3.tar.gz |
Quicker re-sort
Diffstat (limited to 'src')
-rw-r--r-- | src/nnn.c | 30 |
1 files changed, 16 insertions, 14 deletions
@@ -692,6 +692,7 @@ static haiku_nm_h haiku_hnd; #endif /* __GNUC__ */ /* Forward declarations */ +static size_t xstrlcpy(char *dest, const char *src, size_t n); static void redraw(char *path); static int spawn(char *file, char *arg1, char *arg2, const char *dir, uchar flag); static int (*nftw_fn)(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf); @@ -797,8 +798,11 @@ static void printmsg(const char *msg) static void printwait(const char *msg, int *presel) { printmsg(msg); - if (presel) + if (presel) { *presel = MSGWAIT; + if (ndents) + xstrlcpy(g_ctx[cfg.curctx].c_name, dents[cur].name, NAME_MAX + 1); + } } /* Kill curses and display error before exiting */ @@ -2307,8 +2311,8 @@ static int nextsel(int presel) //DPRINTF_D(c); //DPRINTF_S(keyname(c)); - if (c == ERR) - c = 0; + if (c == ERR && presel == MSGWAIT) + c = (cfg.filtermode || filterset()) ? FILTER : CONTROL('L'); else if (c == FILTER || c == CONTROL('L')) /* Clear previous filter when manually starting */ clearfilter(); @@ -5238,11 +5242,8 @@ nochange: } sel = nextsel(presel); - if (presel) { - if (presel == MSGWAIT) - statusbar(path); + if (presel) presel = 0; - } switch (sel) { #ifndef NOMOUSE @@ -5657,17 +5658,18 @@ nochange: } } - /* Save current */ - if (ndents) - copycurname(); - if (cfg.filtermode || filterset()) presel = FILTER; - if (r == 'd' || r == 'a') - goto begin; + if (ndents) { + copycurname(); - qsort(dents, ndents, sizeof(*dents), entrycmpfn); + if (r == 'd' || r == 'a') + goto begin; + + qsort(dents, ndents, sizeof(*dents), entrycmpfn); + move_cursor(ndents ? dentfind(lastname, ndents) : 0, 0); + } continue; case SEL_STATS: // fallthrough case SEL_CHMODX: |