summaryrefslogtreecommitdiffstats
path: root/libmenu/menu_cmdlist.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmenu/menu_cmdlist.c')
-rw-r--r--libmenu/menu_cmdlist.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/libmenu/menu_cmdlist.c b/libmenu/menu_cmdlist.c
index 0e4730f61a..cd0c8ff763 100644
--- a/libmenu/menu_cmdlist.c
+++ b/libmenu/menu_cmdlist.c
@@ -27,6 +27,8 @@ struct list_entry_s {
char* ok;
char* cancel;
+ char* left;
+ char* right;
};
struct menu_priv_s {
@@ -47,6 +49,12 @@ static m_option_t cfg_fields[] = {
static void read_cmd(menu_t* menu,int cmd) {
switch(cmd) {
+ case MENU_CMD_RIGHT:
+ if(mpriv->p.current->right) {
+ mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->right);
+ if(c) mp_input_queue_cmd(c);
+ break;
+ } // fallback on ok if right is not defined
case MENU_CMD_OK: {
if(mpriv->p.current->ok) {
mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->ok);
@@ -54,6 +62,12 @@ static void read_cmd(menu_t* menu,int cmd) {
mp_input_queue_cmd(c);
}
} break;
+ case MENU_CMD_LEFT:
+ if(mpriv->p.current->left) {
+ mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->left);
+ if(c) mp_input_queue_cmd(c);
+ break;
+ } // fallback on cancel if left is not defined
case MENU_CMD_CANCEL:
if(mpriv->p.current->cancel) {
mp_cmd_t* c = mp_input_parse_cmd(mpriv->p.current->cancel);
@@ -84,7 +98,7 @@ static void close(menu_t* menu) {
}
static int parse_args(menu_t* menu,char* args) {
- char *element,*body, **attribs, *name, *ok, *cancel;
+ char *element,*body, **attribs, *name;
list_entry_t* m = NULL;
int r;
ASX_Parser_t* parser = asx_parser_new();
@@ -110,12 +124,12 @@ static int parse_args(menu_t* menu,char* args) {
asx_free_attribs(attribs);
continue;
}
- ok = asx_get_attrib("ok",attribs);
- cancel = asx_get_attrib("cancel",attribs);
m = calloc(1,sizeof(struct list_entry_s));
m->p.txt = name;
- m->ok = ok;
- m->cancel = cancel;
+ m->ok = asx_get_attrib("ok",attribs);
+ m->cancel = asx_get_attrib("cancel",attribs);
+ m->left = asx_get_attrib("left",attribs);
+ m->right = asx_get_attrib("right",attribs);
menu_list_add_entry(menu,m);
free(element);