ask for confirmation on _any_ teliva shortcut
This feels more intrusive. Let's see how we like it. Will I start having ctrl-x ctrl-x in my muscle memory?
This commit is contained in:
parent
101c59d8cb
commit
dd5bc9e3ac
|
@ -1285,20 +1285,6 @@ Wwinsdelln(lua_State *L)
|
||||||
return pushokresult(winsdelln(w, n));
|
return pushokresult(winsdelln(w, n));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int confirm_exit(WINDOW *w) {
|
|
||||||
/* draw a special menu just for this situation */
|
|
||||||
attron(A_BOLD|A_REVERSE);
|
|
||||||
color_set(COLOR_PAIR_MENU, NULL);
|
|
||||||
for (int x = 0; x < COLS; ++x)
|
|
||||||
mvaddch(LINES-1, x, ' ');
|
|
||||||
menu_column = 2;
|
|
||||||
draw_menu_item("^x", "exit");
|
|
||||||
draw_menu_item("anything else", "cancel");
|
|
||||||
attroff(A_BOLD|A_REVERSE);
|
|
||||||
int c = wgetch(w);
|
|
||||||
return (c == CTRL_X);
|
|
||||||
}
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
Read a character from the window input.
|
Read a character from the window input.
|
||||||
@function getch
|
@function getch
|
||||||
|
@ -1320,6 +1306,8 @@ Wgetch(lua_State *L)
|
||||||
if (x > COLS-2) x = COLS-2; if (y > LINES-1) y = LINES-1; /* http://gnats.netbsd.org/56664 */
|
if (x > COLS-2) x = COLS-2; if (y > LINES-1) y = LINES-1; /* http://gnats.netbsd.org/56664 */
|
||||||
mvaddstr(y, x, "");
|
mvaddstr(y, x, "");
|
||||||
int c = wgetch(w);
|
int c = wgetch(w);
|
||||||
|
|
||||||
|
/* audit log */
|
||||||
static char buffer[1024] = {0};
|
static char buffer[1024] = {0};
|
||||||
memset(buffer, '\0', 1024);
|
memset(buffer, '\0', 1024);
|
||||||
if (isspace(c))
|
if (isspace(c))
|
||||||
|
@ -1330,18 +1318,41 @@ Wgetch(lua_State *L)
|
||||||
|
|
||||||
if (c == ERR)
|
if (c == ERR)
|
||||||
return 0;
|
return 0;
|
||||||
if (c == CTRL_X) {
|
|
||||||
if (confirm_exit(w)) {
|
/* standard menu hotkeys */
|
||||||
|
if (c == CTRL_X || c == CTRL_U || c == CTRL_P) {
|
||||||
|
/* always confirm; we're going to throw away data past this point */
|
||||||
|
|
||||||
|
/* draw a special menu just for this situation */
|
||||||
|
attron(A_BOLD|A_REVERSE);
|
||||||
|
color_set(COLOR_PAIR_MENU, NULL);
|
||||||
|
for (int x = 0; x < COLS; ++x)
|
||||||
|
mvaddch(LINES-1, x, ' ');
|
||||||
|
menu_column = 2;
|
||||||
|
if (c == CTRL_X)
|
||||||
|
draw_menu_item("^x", "exit");
|
||||||
|
else if (c == CTRL_U)
|
||||||
|
draw_menu_item("^u", "edit app code");
|
||||||
|
else if (c == CTRL_P)
|
||||||
|
draw_menu_item("^p", "modify app permissions");
|
||||||
|
draw_menu_item("anything else", "cancel");
|
||||||
|
color_set(COLOR_PAIR_ERROR, NULL);
|
||||||
|
mvaddstr(LINES-1, menu_column+1, " Are you sure? ");
|
||||||
|
color_set(COLOR_PAIR_NORMAL, NULL);
|
||||||
|
attroff(A_BOLD|A_REVERSE);
|
||||||
|
|
||||||
|
if (wgetch(w) != c)
|
||||||
|
return pushintresult(0);
|
||||||
|
|
||||||
|
if (c == CTRL_X) {
|
||||||
unlink("teliva_editor_state");
|
unlink("teliva_editor_state");
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
else return pushintresult(0);
|
if (c == CTRL_U)
|
||||||
|
developer_mode(L);
|
||||||
|
if (c == CTRL_P)
|
||||||
|
permissions_mode(L);
|
||||||
}
|
}
|
||||||
if (c == CTRL_U)
|
|
||||||
developer_mode(L);
|
|
||||||
if (c == CTRL_P)
|
|
||||||
permissions_mode(L);
|
|
||||||
/* handle other standard menu hotkeys here */
|
|
||||||
|
|
||||||
return pushintresult(c);
|
return pushintresult(c);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue