diff options
-rw-r--r-- | src/nnn.c | 59 |
1 files changed, 34 insertions, 25 deletions
@@ -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 |