diff options
Diffstat (limited to 'scripts/kconfig/lxdialog/inputbox.c')
-rw-r--r-- | scripts/kconfig/lxdialog/inputbox.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/scripts/kconfig/lxdialog/inputbox.c b/scripts/kconfig/lxdialog/inputbox.c index edb7975dbaa..05e72066b35 100644 --- a/scripts/kconfig/lxdialog/inputbox.c +++ b/scripts/kconfig/lxdialog/inputbox.c @@ -49,6 +49,17 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width char *instr = dialog_input_result; WINDOW *dialog; + if (!init) + instr[0] = '\0'; + else + strcpy(instr, init); + +do_resize: + if (getmaxy(stdscr) <= (height - 2)) + return -ERRDISPLAYTOOSMALL; + if (getmaxx(stdscr) <= (width - 2)) + return -ERRDISPLAYTOOSMALL; + /* center dialog box on screen */ x = (COLS - width) / 2; y = (LINES - height) / 2; @@ -86,11 +97,6 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width wmove(dialog, box_y, box_x); wattrset(dialog, dlg.inputbox.atr); - if (!init) - instr[0] = '\0'; - else - strcpy(instr, init); - input_x = strlen(instr); if (input_x >= box_width) { @@ -220,6 +226,10 @@ int dialog_inputbox(const char *title, const char *prompt, int height, int width case KEY_ESC: key = on_key_esc(dialog); break; + case KEY_RESIZE: + delwin(dialog); + on_key_resize(); + goto do_resize; } } |