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>
This commit is contained in:
@@ -31,6 +31,10 @@ static int list_width, check_x, item_x;
|
|||||||
static void print_item(WINDOW * win, int choice, int selected)
|
static void print_item(WINDOW * win, int choice, int selected)
|
||||||
{
|
{
|
||||||
int i;
|
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 */
|
/* Clear 'residue' of last item */
|
||||||
wattrset(win, dlg.menubox.atr);
|
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' : ' ');
|
wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
|
||||||
|
|
||||||
wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr);
|
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);
|
wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
|
||||||
waddstr(win, (char *)item_str() + 1);
|
waddstr(win, list_item + 1);
|
||||||
if (selected) {
|
if (selected) {
|
||||||
wmove(win, choice, check_x + 1);
|
wmove(win, choice, check_x + 1);
|
||||||
wrefresh(win);
|
wrefresh(win);
|
||||||
}
|
}
|
||||||
|
free(list_item);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user