summaryrefslogtreecommitdiffstats
path: root/libmenu/menu_console.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmenu/menu_console.c')
-rw-r--r--libmenu/menu_console.c46
1 files changed, 18 insertions, 28 deletions
diff --git a/libmenu/menu_console.c b/libmenu/menu_console.c
index 94f64f3cc0..d54611e241 100644
--- a/libmenu/menu_console.c
+++ b/libmenu/menu_console.c
@@ -221,20 +221,6 @@ static void draw(menu_t* menu, mp_image_t* mpi) {
return;
}
-static void read_cmd(menu_t* menu,int cmd) {
- switch(cmd) {
- case MENU_CMD_UP:
- break;
- case MENU_CMD_DOWN:
- case MENU_CMD_OK:
- break;
- case MENU_CMD_CANCEL:
- menu->show = 0;
- menu->cl = 1;
- break;
- }
-}
-
static void check_child(menu_t* menu) {
#ifndef __MINGW32__
fd_set rfd;
@@ -362,16 +348,16 @@ static void enter_cmd(menu_t* menu) {
//mpriv->input = mpriv->cur_history->buffer;
}
-static void read_key(menu_t* menu,int c) {
- if(!mpriv->child || !mpriv->raw_child) switch(c) {
- case KEY_ESC:
+static void read_cmd(menu_t* menu,int cmd) {
+ switch(cmd) {
+ case MENU_CMD_CANCEL:
if(mpriv->hide_time)
mpriv->hide_ts = GetTimerMS();
else
menu->show = 0;
mpriv->show_ts = 0;
return;
- case KEY_ENTER: {
+ case MENU_CMD_OK: {
mp_cmd_t* c;
if(mpriv->child) {
char *str = mpriv->cur_history->buffer;
@@ -422,28 +408,32 @@ static void read_key(menu_t* menu,int c) {
}
return;
}
- case KEY_DELETE:
- case KEY_BS: {
- unsigned int i = strlen(mpriv->cur_history->buffer);
- if(i > 0)
- mpriv->cur_history->buffer[i-1] = '\0';
- return;
- }
- case KEY_UP:
+ case MENU_CMD_UP:
if(mpriv->cur_history->prev)
mpriv->cur_history = mpriv->cur_history->prev;
break;
- case KEY_DOWN:
+ case MENU_CMD_DOWN:
if(mpriv->cur_history->next)
mpriv->cur_history = mpriv->cur_history->next;
break;
}
+}
+static void read_key(menu_t* menu,int c) {
if(mpriv->child && mpriv->raw_child) {
write(mpriv->child_fd[0],&c,sizeof(int));
return;
}
+ if (c == KEY_DELETE || c == KEY_BS) {
+ unsigned int i = strlen(mpriv->cur_history->buffer);
+ if(i > 0)
+ mpriv->cur_history->buffer[i-1] = '\0';
+ return;
+ }
+ if (menu_dflt_read_key(menu, c))
+ return;
+
if(isascii(c)) {
int l = strlen(mpriv->cur_history->buffer);
if(l >= mpriv->cur_history->size) {
@@ -453,7 +443,7 @@ static void read_key(menu_t* menu,int c) {
mpriv->cur_history->buffer[l] = (char)c;
mpriv->cur_history->buffer[l+1] = '\0';
}
-
+ return;
}