]> Sergey Matveev's repositories - nnn.git/commitdiff
Support mouse scroll
authorArun Prakash Jana <engineerarun@gmail.com>
Fri, 12 Jul 2019 14:20:30 +0000 (19:50 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Fri, 12 Jul 2019 14:20:30 +0000 (19:50 +0530)
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

index 3454359961362f2b2941a1aa8d26bd0424a599be..8e841c132b7b9d034af75b6a897280e02c496997 100644 (file)
--- 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]..."