summaryrefslogtreecommitdiff
path: root/com32/modules/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'com32/modules/menu.c')
-rw-r--r--com32/modules/menu.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/com32/modules/menu.c b/com32/modules/menu.c
index e3dace2f..c9794c24 100644
--- a/com32/modules/menu.c
+++ b/com32/modules/menu.c
@@ -131,6 +131,8 @@ void draw_menu(int sel, int top)
if ( allowedit )
printf("%s\033[%d;1H%s", menu_attrib->tabmsg, TABMSG_ROW,
pad_line("Press [Tab] to edit options", 1, WIDTH));
+
+ printf("%s\033[%d;1H", menu_attrib->screen, END_ROW);
}
char *edit_cmdline(char *input)
@@ -176,7 +178,7 @@ char *edit_cmdline(char *input)
case KEY_CTRL('U'):
if ( len ) {
len = 0;
- cmdline[len] = 0;
+ cmdline[len] = '\0';
redraw = 1;
}
break;
@@ -187,6 +189,7 @@ char *edit_cmdline(char *input)
len--;
wasbs = wasbs || (cmdline[len-1] <= ' ');
}
+ cmdline[len] = '\0';
redraw = 1;
}
break;
@@ -207,11 +210,9 @@ const char *run_menu(void)
int done = 0;
int entry = defentry;
int top = 0;
+ int clear = 1;
char *cmdline;
- /* Start with a clear screen */
- printf("%s\033[2J", menu_attrib->screen);
-
while ( !done ) {
if ( entry < 0 )
entry = 0;
@@ -223,6 +224,11 @@ const char *run_menu(void)
else if ( top > entry )
top = entry;
+ /* Start with a clear screen */
+ if ( clear )
+ printf("%s\033[2J", menu_attrib->screen);
+ clear = 0;
+
draw_menu(entry, top);
key = get_key(stdin);
@@ -266,6 +272,8 @@ const char *run_menu(void)
cmdline = edit_cmdline(menu_entries[entry].cmdline);
if ( cmdline )
return cmdline;
+ else
+ clear = 1;
}
break;
case KEY_CTRL('C'): /* Ctrl-C */
@@ -278,7 +286,7 @@ const char *run_menu(void)
}
/* Return the label name so localboot and ipappend work */
- return menu_entries[entry].displayname;
+ return menu_entries[entry].label;
}