aboutsummaryrefslogtreecommitdiff
path: root/scripts/kconfig/lxdialog/checklist.c
diff options
context:
space:
mode:
authorLi Zefan <lizf@cn.fujitsu.com>2010-06-03 15:24:57 +0800
committerMichal Marek <mmarek@suse.cz>2010-06-03 13:41:02 +0200
commite7401d8321f89a3785a395ba307c720e2b390f96 (patch)
tree8ed62dbaf1415de5da9e0382fc1ac632850423b0 /scripts/kconfig/lxdialog/checklist.c
parent42ef223c4a0f6e34e13ccb503b423ebdc04878e1 (diff)
menuconfig: truncate list items
Truncate list items to fit in a single line, otherwise those items which have long prompts will cover some other items. This follows the behavior of menubox. Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> Signed-off-by: Michal Marek <mmarek@suse.cz>
Diffstat (limited to 'scripts/kconfig/lxdialog/checklist.c')
-rw-r--r--scripts/kconfig/lxdialog/checklist.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/scripts/kconfig/lxdialog/checklist.c b/scripts/kconfig/lxdialog/checklist.c
index c92a05a2de1..a2eb80fbc89 100644
--- a/scripts/kconfig/lxdialog/checklist.c
+++ b/scripts/kconfig/lxdialog/checklist.c
@@ -31,6 +31,10 @@ static int list_width, check_x, item_x;
static void print_item(WINDOW * win, int choice, int selected)
{
int i;
+ char *list_item = malloc(list_width + 1);
+
+ strncpy(list_item, item_str(), list_width - item_x);
+ list_item[list_width - item_x] = '\0';
/* Clear 'residue' of last item */
wattrset(win, dlg.menubox.atr);
@@ -45,13 +49,14 @@ static void print_item(WINDOW * win, int choice, int selected)
wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr);
- mvwaddch(win, choice, item_x, item_str()[0]);
+ mvwaddch(win, choice, item_x, list_item[0]);
wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
- waddstr(win, (char *)item_str() + 1);
+ waddstr(win, list_item + 1);
if (selected) {
wmove(win, choice, check_x + 1);
wrefresh(win);
}
+ free(list_item);
}
/*