aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/nnn.c59
1 files changed, 34 insertions, 25 deletions
diff --git a/src/nnn.c b/src/nnn.c
index e32a0d9..3093d64 100644
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -2974,33 +2974,42 @@ nochange:
printmsg("unsupported file");
goto nochange;
}
- case SEL_NEXT:
- if (cur < ndents - 1)
- ++cur;
- else if (ndents)
- /* Roll over, set cursor to first entry */
+ case SEL_NEXT: // fallthrough
+ case SEL_PREV: // fallthrough
+ case SEL_PGDN: // fallthrough
+ case SEL_PGUP: // fallthrough
+ case SEL_HOME: // fallthrough
+ case SEL_END:
+ switch (sel) {
+ case SEL_NEXT:
+ if (cur < ndents - 1)
+ ++cur;
+ else if (ndents)
+ /* Roll over, set cursor to first entry */
+ cur = 0;
+ break;
+ case SEL_PREV:
+ if (cur > 0)
+ --cur;
+ else if (ndents)
+ /* Roll over, set cursor to last entry */
+ cur = ndents - 1;
+ break;
+ case SEL_PGDN:
+ if (cur < ndents - 1)
+ cur += MIN((LINES - 4) / 2, ndents - 1 - cur);
+ break;
+ case SEL_PGUP:
+ if (cur > 0)
+ cur -= MIN((LINES - 4) / 2, cur);
+ break;
+ case SEL_HOME:
cur = 0;
- break;
- case SEL_PREV:
- if (cur > 0)
- --cur;
- else if (ndents)
- /* Roll over, set cursor to last entry */
+ break;
+ default: /* case SEL_END */
cur = ndents - 1;
- break;
- case SEL_PGDN:
- if (cur < ndents - 1)
- cur += MIN((LINES - 4) / 2, ndents - 1 - cur);
- break;
- case SEL_PGUP:
- if (cur > 0)
- cur -= MIN((LINES - 4) / 2, cur);
- break;
- case SEL_HOME:
- cur = 0;
- break;
- case SEL_END:
- cur = ndents - 1;
+ break;
+ }
break;
case SEL_CDHOME: // fallthrough
case SEL_CDBEGIN: // fallthrough