summaryrefslogtreecommitdiffstats
path: root/gnu/lib/libdialog/checklist.c
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/lib/libdialog/checklist.c')
-rw-r--r--gnu/lib/libdialog/checklist.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gnu/lib/libdialog/checklist.c b/gnu/lib/libdialog/checklist.c
index 188b542..c696d47 100644
--- a/gnu/lib/libdialog/checklist.c
+++ b/gnu/lib/libdialog/checklist.c
@@ -43,7 +43,7 @@ dialog_checklist(unsigned char *title, unsigned char *prompt, int height, int wi
{
int i, j, x, y, cur_x, cur_y, old_x, old_y, box_x, box_y, key = 0, button,
choice, l, k, scroll, max_choice, item_no = 0, *status;
- int redraw_menu = FALSE;
+ int redraw_menu = FALSE, cursor_reset = FALSE;
int rval = 0, onlist = 1, ok_space, cancel_space;
char okButton, cancelButton;
WINDOW *dialog, *list;
@@ -452,6 +452,7 @@ draw:
scroll = 0;
choice = 0;
redraw_menu = TRUE;
+ cursor_reset = TRUE;
onlist = 1;
break;
@@ -461,6 +462,7 @@ draw:
scroll = 0;
choice = max_choice - 1;
redraw_menu = TRUE;
+ cursor_reset = TRUE;
onlist = 1;
break;
@@ -581,7 +583,13 @@ draw:
print_button(dialog, " OK ", y, x, !button);
}
wnoutrefresh(dialog);
- wmove(list, old_y, old_x);
+ if (cursor_reset) {
+ wmove(list, choice, check_x+1);
+ cursor_reset = FALSE;
+ }
+ else {
+ wmove(list, old_y, old_x);
+ }
wrefresh(list);
redraw_menu = FALSE;
}
OpenPOWER on IntegriCloud