]> Sergey Matveev's repositories - nnn.git/commitdiff
Fix #257
authorArun Prakash Jana <engineerarun@gmail.com>
Wed, 8 May 2019 22:41:29 +0000 (04:11 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Wed, 22 May 2019 03:14:19 +0000 (08:44 +0530)
src/nnn.c

index f580159ca42d65a3a05bd63eabdf353b4397b16f..70fe67ce4a2179364c7c119031d962a4aa6aef35 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -3135,14 +3135,16 @@ nochange:
                        goto begin;
                case SEL_CLICK:
                        if (getmouse(&event) != OK)
-                               break;
+                               goto nochange;
 
                        // Handle clicking on a context at the top:
                        if (event.y == 0) {
                                // Get context from: "[1 2 3 4]..."
                                r = event.x/2;
-                               if (event.x != 1 + 2*r)
-                                       break; // The character after the context number
+
+                               if (event.x != 1 + (r << 1))
+                                       goto nochange; // The character after the context number
+
                                if (0 <= r && r < CTX_MAX && r != cfg.curctx) {
                                        savecurctx(&cfg, path, dents[cur].name, r);
 
@@ -3154,25 +3156,26 @@ nochange:
                                        setdirwatch();
                                        goto begin;
                                }
-                               break;
+                               goto nochange;
                        }
 
                        // Handle clicking on a file:
-                       if (2 <= event.y && event.y < LINES - 2) {
-                               r = 0;
-                               if (cur-(LINES-4)/2 > 0)
-                                       r = cur-(LINES-4)/2;
-                               if (ndents >= LINES-4 && ndents - (LINES-4) < r)
-                                       r = ndents - (LINES-4);
-                               r += event.y - 2;
+                       if (2 <= event.y && event.y < xlines - 2) {
+                               r = event.y - 2;
+
                                if (r >= ndents)
-                                       break;
-                               cur = r;
+                                       goto nochange;
+
+                               if (ndents > (xlines - 4) && cur >= ((xlines - 4) >> 1))
+                                       cur -= ((xlines - 4) >> 1) - r;
+                               else
+                                       cur = r;
+
                                // Single click just selects, double click also opens
                                if (event.bstate != BUTTON1_DOUBLE_CLICKED)
-                                       break; // fallthrough
+                                       break;
                        } else
-                               break;
+                               goto nochange; // fallthrough
                case SEL_NAV_IN: // fallthrough
                case SEL_GOIN:
                        /* Cannot descend in empty directories */