diff options
author | bapt <bapt@FreeBSD.org> | 2013-06-17 10:00:48 +0000 |
---|---|---|
committer | bapt <bapt@FreeBSD.org> | 2013-06-17 10:00:48 +0000 |
commit | 2b5579c9bdbbca29e7b2df1ee9a9e5d1cce2b06f (patch) | |
tree | d48b8f5f4c81e26e8dbb6597554286f1d6d53d3a /inputbox.c | |
parent | a94245b3d36b447d1f761028da7e072210e64b43 (diff) | |
download | FreeBSD-src-2b5579c9bdbbca29e7b2df1ee9a9e5d1cce2b06f.zip FreeBSD-src-2b5579c9bdbbca29e7b2df1ee9a9e5d1cce2b06f.tar.gz |
Update dialog to 1.2-20130523
Diffstat (limited to 'inputbox.c')
-rw-r--r-- | inputbox.c | 25 |
1 files changed, 21 insertions, 4 deletions
@@ -1,5 +1,5 @@ /* - * $Id: inputbox.c,v 1.74 2012/07/01 18:13:40 Zoltan.Kelemen Exp $ + * $Id: inputbox.c,v 1.76 2012/12/03 11:46:50 tom Exp $ * * inputbox.c -- implements the input box * @@ -73,6 +73,7 @@ dialog_inputbox(const char *title, const char *cprompt, int height, int width, int result = DLG_EXIT_UNKNOWN; int state; int first; + int edited; char *input; WINDOW *dialog; WINDOW *editor; @@ -85,6 +86,7 @@ dialog_inputbox(const char *title, const char *cprompt, int height, int width, /* Set up the initial value */ input = dlg_set_result(init); + edited = FALSE; #ifdef KEY_RESIZE retry: @@ -138,7 +140,12 @@ dialog_inputbox(const char *title, const char *cprompt, int height, int width, editor = dlg_sub_window(dialog, 1, box_width, yorg + box_y, xorg + box_x); dlg_register_window(editor, "inputbox2", binding2); - dlg_trace_win(dialog); + if (*input != '\0') { + dlg_show_string(editor, input, chr_offset, inputbox_attr, + 0, 0, box_width, password, first); + wsyncup(editor); + wcursyncup(editor); + } while (result == DLG_EXIT_UNKNOWN) { int edit = 0; @@ -153,6 +160,13 @@ dialog_inputbox(const char *title, const char *cprompt, int height, int width, } if (!first) { + if (*input != '\0' && !edited) { + dlg_show_string(editor, input, chr_offset, inputbox_attr, + 0, 0, box_width, password, first); + wmove(editor, 0, chr_offset); + wsyncup(editor); + wcursyncup(editor); + } key = dlg_mouse_wgetch((state == sTEXT) ? editor : dialog, &fkey); if (dlg_result_key(key, fkey, &result)) break; @@ -173,9 +187,12 @@ dialog_inputbox(const char *title, const char *cprompt, int height, int width, edit = dlg_edit_string(input, &chr_offset, key, fkey, first); if (edit) { - dlg_show_string(dialog, input, chr_offset, inputbox_attr, - box_y, box_x, box_width, password, first); + dlg_show_string(editor, input, chr_offset, inputbox_attr, + 0, 0, box_width, password, first); + wsyncup(editor); + wcursyncup(editor); first = FALSE; + edited = TRUE; continue; } else if (first) { first = FALSE; |