nonl();
//intrflush(stdscr, FALSE);
keypad(stdscr, TRUE);
+ mousemask(BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED, NULL);
curs_set(FALSE); /* Hide cursor */
start_color();
use_default_colors();
bool dir_changed = FALSE;
struct stat sb;
char *path, *lastdir, *lastname, *dir, *tmp;
+ MEVENT event;
atexit(dentfree);
setdirwatch();
goto begin;
+ case SEL_CLICK:
+ if (getmouse(&event) != OK)
+ break;
+ // 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 (0 <= r && r < CTX_MAX && r != cfg.curctx) {
+ savecurctx(&cfg, path, dents[cur].name, r);
+
+ /* Reset the pointers */
+ path = g_ctx[r].c_path;
+ lastdir = g_ctx[r].c_last;
+ lastname = g_ctx[r].c_name;
+
+ setdirwatch();
+ goto begin;
+ }
+ break;
+ }
+ // 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 (r >= ndents)
+ break;
+ cur = r;
+ // Single click just selects, double click also opens
+ if (event.bstate != BUTTON1_DOUBLE_CLICKED)
+ break;
+ } else {
+ break;
+ }
case SEL_NAV_IN: // fallthrough
case SEL_GOIN:
/* Cannot descend in empty directories */