menu: add MENU CLEAR option
authorH. Peter Anvin <hpa@zytor.com>
Thu, 4 Feb 2010 00:05:59 +0000 (16:05 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Thu, 4 Feb 2010 00:05:59 +0000 (16:05 -0800)
Add MENU CLEAR to clear the screen on menu exit.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
com32/menu/menu.h
com32/menu/menumain.c
com32/menu/readconfig.c
doc/menu.txt

index 52b4e4d..1e596e1 100644 (file)
@@ -180,6 +180,7 @@ extern struct menu *root_menu, *start_menu, *hide_menu, *menu_list;
 /* These are global parameters regardless of which menu we're displaying */
 extern int shiftkey;
 extern int hiddenmenu;
+extern int clearmenu;
 extern long long totaltimeout;
 
 void parse_configs(char **argv);
index 9516f72..0c39264 100644 (file)
@@ -1130,6 +1130,9 @@ int main(int argc, char *argv[])
        local_cursor_enable(true);
        cmdline = run_menu();
 
+       if (clearmenu)
+           clear_screen();
+
        local_cursor_enable(false);
        printf("\033[?25h\033[%d;1H\033[0m", END_ROW);
 
index a248721..d4c8848 100644 (file)
@@ -1,7 +1,7 @@
 /* ----------------------------------------------------------------------- *
  *
  *   Copyright 2004-2009 H. Peter Anvin - All Rights Reserved
- *   Copyright 2009 Intel Corporation; author: H. Peter Anvin
+ *   Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
  *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
@@ -34,6 +34,7 @@ struct menu *root_menu, *start_menu, *hide_menu, *menu_list;
 /* These are global parameters regardless of which menu we're displaying */
 int shiftkey = 0;              /* Only display menu if shift key pressed */
 int hiddenmenu = 0;
+int clearmenu = 0;
 long long totaltimeout = 0;
 
 /* Keep track of global default */
@@ -690,6 +691,8 @@ static void parse_config_file(FILE * f)
                m->menu_background = refdup_word(&p);
            } else if ((ep = looking_at(p, "hidden"))) {
                hiddenmenu = 1;
+           } else if ((ep = looking_at(p, "clear"))) {
+               clearmenu = 1;
            } else if ((ep = is_message_name(p, &msgnr))) {
                refstr_put(m->messages[msgnr]);
                m->messages[msgnr] = refstrdup(skipspace(ep));
index e160124..c912c1d 100644 (file)
@@ -48,6 +48,14 @@ MENU HIDDEN
        All that is displayed is a timeout message.
 
 
+MENU CLEAR
+
+       Clear the screen when exiting the menu, instead of leaving the
+       menu displayed.  For vesamenu, this means the graphical
+       background is still displayed without the menu itself for as
+       long as the screen remains in graphics mode.
+
+
 MENU SHIFTKEY
 
        Exit the menu system immediately unless either the Shift or Alt