|
|
@@ -871,6 +871,7 @@ static bool initcurses(void) |
|
|
|
nonl(); |
|
|
|
//intrflush(stdscr, FALSE); |
|
|
|
keypad(stdscr, TRUE); |
|
|
|
mousemask(BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED, NULL); |
|
|
|
curs_set(FALSE); /* Hide cursor */ |
|
|
|
start_color(); |
|
|
|
use_default_colors(); |
|
|
@@ -3034,6 +3035,7 @@ static void browse(char *ipath) |
|
|
|
bool dir_changed = FALSE; |
|
|
|
struct stat sb; |
|
|
|
char *path, *lastdir, *lastname, *dir, *tmp; |
|
|
|
MEVENT event; |
|
|
|
|
|
|
|
atexit(dentfree); |
|
|
|
|
|
|
@@ -3131,6 +3133,45 @@ nochange: |
|
|
|
|
|
|
|
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 */ |
|
|
|