diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-01-08 14:33:53 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-01-08 14:33:53 +0000 |
commit | a9f6941436e83d2f91caf06c13bee86cad309064 (patch) | |
tree | 8f3b14ce3f98718cc2513344b82ceb703638ba9b /scripts/config/lxdialog/menubox.c | |
parent | 3f26960a5c8db5b7cbdf120ddcd7feaadca51c8f (diff) | |
download | upstream-a9f6941436e83d2f91caf06c13bee86cad309064.tar.gz upstream-a9f6941436e83d2f91caf06c13bee86cad309064.tar.bz2 upstream-a9f6941436e83d2f91caf06c13bee86cad309064.zip |
scripts/config: sync with linux upstream
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 43873
Diffstat (limited to 'scripts/config/lxdialog/menubox.c')
-rw-r--r-- | scripts/config/lxdialog/menubox.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/scripts/config/lxdialog/menubox.c b/scripts/config/lxdialog/menubox.c index 48d382e7e3..11ae9ad7ac 100644 --- a/scripts/config/lxdialog/menubox.c +++ b/scripts/config/lxdialog/menubox.c @@ -64,7 +64,7 @@ static int menu_width, item_x; * Print menu item */ static void do_print_item(WINDOW * win, const char *item, int line_y, - int selected, int hotkey) + int selected, int hotkey) { int j; char *menu_item = malloc(menu_width + 1); @@ -182,7 +182,7 @@ static void do_scroll(WINDOW *win, int *scroll, int n) * Display a menu for choosing among a number of options */ int dialog_menu(const char *title, const char *prompt, - const void *selected, int *s_scroll) + const void *selected, int *s_scroll) { int i, j, x, y, box_x, box_y; int height, width, menu_height; @@ -193,7 +193,7 @@ int dialog_menu(const char *title, const char *prompt, do_resize: height = getmaxy(stdscr); width = getmaxx(stdscr); - if (height < 15 || width < 65) + if (height < MENUBOX_HEIGTH_MIN || width < MENUBOX_WIDTH_MIN) return -ERRDISPLAYTOOSMALL; height -= 4; @@ -203,8 +203,8 @@ do_resize: max_choice = MIN(menu_height, item_count()); /* center dialog box on screen */ - x = (COLS - width) / 2; - y = (LINES - height) / 2; + x = (getmaxx(stdscr) - width) / 2; + y = (getmaxy(stdscr) - height) / 2; draw_shadow(stdscr, y, x, height, width); @@ -303,10 +303,11 @@ do_resize: } } - if (i < max_choice || - key == KEY_UP || key == KEY_DOWN || - key == '-' || key == '+' || - key == KEY_PPAGE || key == KEY_NPAGE) { + if (item_count() != 0 && + (i < max_choice || + key == KEY_UP || key == KEY_DOWN || + key == '-' || key == '+' || + key == KEY_PPAGE || key == KEY_NPAGE)) { /* Remove highligt of current item */ print_item(scroll + choice, choice, FALSE); |