]> Sergey Matveev's repositories - nnn.git/commitdiff
Use test and set in frequent keys
authorArun Prakash Jana <engineerarun@gmail.com>
Thu, 26 Dec 2019 12:24:58 +0000 (17:54 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Thu, 26 Dec 2019 12:54:32 +0000 (18:24 +0530)
src/nnn.c

index f681297054b4178a6f476cd4ba01b5e5cf8d4b42..1d46b291460aed577498e8c675ff62b05ddd98f7 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -1810,6 +1810,12 @@ static int visible_str(const fltrexp_t *fltrexp, const char *fname)
 
 static int (*filterfn)(const fltrexp_t *fltr, const char *fname) = &visible_str;
 
+static void clearfilter()
+{
+       if (g_ctx[cfg.curctx].c_fltr[1])
+               g_ctx[cfg.curctx].c_fltr[1] = 0;
+}
+
 static int entrycmp(const void *va, const void *vb)
 {
        const struct entry *pa = (pEntry)va;
@@ -1883,6 +1889,10 @@ static int nextsel(int presel)
                c = getch();
                //DPRINTF_D(c);
 
+               /* Clear previous filter when manually starting */
+               if (c == FILTER)
+                       clearfilter();
+
                if (presel == MSGWAIT) {
                        if (cfg.filtermode)
                                c = FILTER;
@@ -4371,7 +4381,7 @@ nochange:
 
                                /* Save history */
                                xstrlcpy(lastname, xbasename(path), NAME_MAX + 1);
-                               g_ctx[cfg.curctx].c_fltr[1] = '\0';
+                               clearfilter();
 
                                xstrlcpy(path, dir, PATH_MAX);
 
@@ -4396,7 +4406,7 @@ nochange:
 
                        /* Toggle filter mode on left click on last 2 lines */
                        if (event.y >= xlines - 2 && event.bstate == BUTTON1_PRESSED) {
-                               g_ctx[cfg.curctx].c_fltr[1] = '\0';
+                               clearfilter();
                                cfg.filtermode ^= 1;
                                if (cfg.filtermode) {
                                        presel = FILTER;
@@ -4464,7 +4474,8 @@ nochange:
                                xstrlcpy(lastdir, path, PATH_MAX);
 
                                xstrlcpy(path, newpath, PATH_MAX);
-                               lastname[0] = g_ctx[cfg.curctx].c_fltr[1] = '\0';
+                               lastname[0] = '\0';
+                               clearfilter();
                                setdirwatch();
                                goto begin;
                        case S_IFREG:
@@ -4500,7 +4511,7 @@ nochange:
 
                                                if (runfile[0])
                                                        runfile[0] = '\0';
-                                               g_ctx[cfg.curctx].c_fltr[1] = '\0';
+                                               clearfilter();
 
                                                setdirwatch();
                                                goto begin;
@@ -4588,7 +4599,8 @@ nochange:
                        xstrlcpy(lastdir, path, PATH_MAX);
 
                        xstrlcpy(path, newpath, PATH_MAX);
-                       lastname[0] = g_ctx[cfg.curctx].c_fltr[1] = '\0';
+                       lastname[0] = '\0';
+                       clearfilter();
                        DPRINTF_S(path);
                        setdirwatch();
                        goto begin;
@@ -4688,7 +4700,8 @@ nochange:
                        if (strcmp(path, newpath) == 0)
                                break;
 
-                       lastname[0] = g_ctx[cfg.curctx].c_fltr[1] = '\0';
+                       lastname[0] =  '\0';
+                       clearfilter();
 
                        /* Save last working directory */
                        xstrlcpy(lastdir, path, PATH_MAX);
@@ -4740,6 +4753,7 @@ nochange:
                                cfg.filtermode ^= 1;
                                if (cfg.filtermode) {
                                        presel = FILTER;
+                                       clearfilter();
                                        goto nochange;
                                }
 
@@ -5299,7 +5313,7 @@ nochange:
                                        lastname[0] = '\0';
                                }
                                setdirwatch();
-                               g_ctx[cfg.curctx].c_fltr[1] = 0;
+                               clearfilter();
                                goto begin;
                        case SEL_LAUNCH:
                                launch_app(path, newpath);