From 30aaa12e6fe535518e1d0b71e5fc8b6bc66bf3b4 Mon Sep 17 00:00:00 2001
From: Arun Prakash Jana <engineerarun@gmail.com>
Date: Thu, 9 May 2019 04:11:29 +0530
Subject: [PATCH] Fix #257

---
 src/nnn.c | 33 ++++++++++++++++++---------------
 1 file changed, 18 insertions(+), 15 deletions(-)

diff --git a/src/nnn.c b/src/nnn.c
index f580159c..70fe67ce 100644
--- 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 */
-- 
2.51.0