From 9b0cf4a2b9729e7705a7d64ad5668da3cac84bc3 Mon Sep 17 00:00:00 2001 From: Arun Prakash Jana Date: Fri, 12 Jul 2019 19:50:30 +0530 Subject: [PATCH] Support mouse scroll This is limited to libncurses support of full mouse scrolling. Ref: https://invisible-island.net/ncurses/man/curs_mouse.3x.html#h3-Mouse-events --- src/nnn.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/nnn.c b/src/nnn.c index 34543599..8e841c13 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -911,7 +911,12 @@ static bool initcurses(void) nonl(); //intrflush(stdscr, FALSE); keypad(stdscr, TRUE); +#if NCURSES_MOUSE_VERSION <= 1 mousemask(BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED | BUTTON2_CLICKED, NULL); +#else + mousemask(BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED | BUTTON2_CLICKED + | BUTTON4_PRESSED | BUTTON5_PRESSED, NULL); +#endif mouseinterval(400); curs_set(FALSE); /* Hide cursor */ start_color(); @@ -3355,6 +3360,23 @@ nochange: goto begin; } +#if NCURSES_MOUSE_VERSION > 1 + if (event.bstate == BUTTON4_PRESSED || event.bstate == BUTTON5_PRESSED) + { + /* Scroll up */ + if (event.bstate == BUTTON4_PRESSED && ndents) { + move_cursor((cur + ndents - 1) % ndents, 0); + break; + } + + /* Scroll down */ + if (event.bstate == BUTTON5_PRESSED && ndents) { + move_cursor((cur + 1) % ndents, 0); + break; + } + } +#endif + // Handle clicking on a context at the top: if (event.y == 0) { // Get context from: "[1 2 3 4]..."