From f10f804f01981a7cf716f5e046e1ba48dacfbd5f Mon Sep 17 00:00:00 2001 From: Alexey Zelkin Date: Tue, 4 Jan 2005 11:30:24 +0000 Subject: [PATCH] Fix 'redraw' of checklist box. It is occurs in situation when size of checklist box is strictly set via command line, but amount of checklist items less than height of checklist box. In this case bottom part of box was not redrawn (occurs when passing focus behind of 'Cancel' button while configuring any FreeBSD port OPTIONS) MFC after: 3 days --- gnu/lib/libdialog/checklist.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gnu/lib/libdialog/checklist.c b/gnu/lib/libdialog/checklist.c index 39b36ab8c4dd..dc65d755b86e 100644 --- a/gnu/lib/libdialog/checklist.c +++ b/gnu/lib/libdialog/checklist.c @@ -567,6 +567,15 @@ draw: if (redraw_menu) { getyx(list, old_y, old_x); wclear(list); + + /* + * Re-draw a box around the list items. It is required + * if amount of list items is smaller than height of listbox. + * Otherwise un-redrawn field will be filled with default + * screen attributes instead of dialog attributes. + */ + draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2, menubox_border_attr, menubox_attr); + for (i = 0; i < max_choice; i++) print_item(list, items[(scroll + i) * 3], items[(scroll + i) * 3 + 1], status[scroll + i], i, i == choice, DREF(ditems, scroll + i), list_width, item_x, check_x); print_arrows(dialog, scroll, list_height, item_no, box_x, box_y, check_x + 4, cur_x, cur_y);