Middle click to visit parent dir

This commit is contained in:
Arun Prakash Jana 2019-05-18 10:55:17 +05:30
parent 84dbec6f3d
commit 9dc3976533
No known key found for this signature in database
GPG key ID: A75979F35C080412
2 changed files with 31 additions and 21 deletions

View file

@ -50,8 +50,8 @@ It runs on Linux, macOS, Raspberry Pi, BSD, Cygwin, Linux subsystem for Windows
- [Quickstart](#quickstart)
- [Usage](#usage)
- [Cmdline options](#cmdline-options)
- [Keyboard shortcuts](#keyboard-shortcuts)
- [Leader key](#leader-key)
- [Keyboard and mouse](#keyboard-and-mouse)
- [Leader key](#leader-key)
- [Contexts](#contexts)
- [Context-specific color](#context-specific-color)
- [Selection](#selection)
@ -230,7 +230,7 @@ optional args:
-h show help
```
#### Keyboard shortcuts
#### Keyboard and mouse
Press <kbd>?</kbd> in `nnn` to see the list anytime.
@ -270,7 +270,13 @@ Press <kbd>?</kbd> in `nnn` to see the list anytime.
Note: Help & settings, file details, media info and archive listing are shown in the PAGER. Use the PAGER-specific keys in these screens.
#### Leader key
| Mouse click | Function |
|:---:| --- |
| Left single | Select context or entry |
| Left double | Select context or open file/directory |
| Middle single | Visit parent directory |
##### Leader key
The Leader key provides a powerful multi-functional navigation mechanism. It is case-sensitive and understands contexts, bookmarks and location shortcuts.

View file

@ -874,7 +874,7 @@ static bool initcurses(void)
nonl();
//intrflush(stdscr, FALSE);
keypad(stdscr, TRUE);
mousemask(BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED, NULL);
mousemask(BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED | BUTTON2_CLICKED, NULL);
curs_set(FALSE); /* Hide cursor */
start_color();
use_default_colors();
@ -3116,24 +3116,28 @@ nochange:
presel = 0;
switch (sel) {
case SEL_BACK:
dir = visit_parent(path, newpath, &presel);
if (!dir)
goto nochange;
/* Save last working directory */
xstrlcpy(lastdir, path, PATH_MAX);
/* Save history */
xstrlcpy(lastname, xbasename(path), NAME_MAX + 1);
xstrlcpy(path, dir, PATH_MAX);
setdirwatch();
goto begin;
case SEL_CLICK:
if (getmouse(&event) != OK)
goto nochange;
goto nochange; // fallthrough
case SEL_BACK:
// Handle right click to go to parent
if ((sel == SEL_BACK)
|| (sel == SEL_CLICK && event.bstate == BUTTON2_CLICKED)) {
dir = visit_parent(path, newpath, &presel);
if (!dir)
goto nochange;
/* Save last working directory */
xstrlcpy(lastdir, path, PATH_MAX);
/* Save history */
xstrlcpy(lastname, xbasename(path), NAME_MAX + 1);
xstrlcpy(path, dir, PATH_MAX);
setdirwatch();
goto begin;
}
// Handle clicking on a context at the top:
if (event.y == 0) {