Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0e175d05 authored by Sam Ravnborg's avatar Sam Ravnborg
Browse files

kconfig: Left aling menu items in menuconfig



Keeping menu lines on a fixed position creates less visual
noise when navigating the menus.

Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
parent fa7009d5
Loading
Loading
Loading
Loading
+11 −19
Original line number Original line Diff line number Diff line
@@ -58,7 +58,8 @@


#include "dialog.h"
#include "dialog.h"


static int menu_width, item_x;
#define ITEM_IDENT 4   /* Indent of menu entries. Fixed for all menus */
static int menu_width;


/*
/*
 * Print menu item
 * Print menu item
@@ -86,13 +87,13 @@ static void print_item(WINDOW * win, const char *item, int choice,
	wclrtoeol(win);
	wclrtoeol(win);
#endif
#endif
	wattrset(win, selected ? item_selected_attr : item_attr);
	wattrset(win, selected ? item_selected_attr : item_attr);
	mvwaddstr(win, choice, item_x, menu_item);
	mvwaddstr(win, choice, ITEM_IDENT, menu_item);
	if (hotkey) {
	if (hotkey) {
		wattrset(win, selected ? tag_key_selected_attr : tag_key_attr);
		wattrset(win, selected ? tag_key_selected_attr : tag_key_attr);
		mvwaddch(win, choice, item_x + j, menu_item[j]);
		mvwaddch(win, choice, ITEM_IDENT + j, menu_item[j]);
	}
	}
	if (selected) {
	if (selected) {
		wmove(win, choice, item_x + 1);
		wmove(win, choice, ITEM_IDENT + 1);
		wrefresh(win);
		wrefresh(win);
	}
	}
	free(menu_item);
	free(menu_item);
@@ -207,19 +208,10 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
	draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
	draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
		 menubox_border_attr, menubox_attr);
		 menubox_border_attr, menubox_attr);


	/*
	/* Set choice to default item */
	 * Find length of longest item in order to center menu.
	for (i = 0; i < item_no; i++)
	 * Set 'choice' to default item.
	 */
	item_x = 0;
	for (i = 0; i < item_no; i++) {
		item_x =
		    MAX(item_x, MIN(menu_width, strlen(items[i * 2 + 1]) + 2));
		if (strcmp(current, items[i * 2]) == 0)
		if (strcmp(current, items[i * 2]) == 0)
			choice = i;
			choice = i;
	}

	item_x = (menu_width - item_x) / 2;


	/* get the scroll info from the temp file */
	/* get the scroll info from the temp file */
	if ((f = fopen("lxdialog.scrltmp", "r")) != NULL) {
	if ((f = fopen("lxdialog.scrltmp", "r")) != NULL) {
@@ -254,10 +246,10 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
	wnoutrefresh(menu);
	wnoutrefresh(menu);


	print_arrows(dialog, item_no, scroll,
	print_arrows(dialog, item_no, scroll,
		     box_y, box_x + item_x + 1, menu_height);
		     box_y, box_x + ITEM_IDENT + 1, menu_height);


	print_buttons(dialog, height, width, 0);
	print_buttons(dialog, height, width, 0);
	wmove(menu, choice, item_x + 1);
	wmove(menu, choice, ITEM_IDENT + 1);
	wrefresh(menu);
	wrefresh(menu);


	while (key != ESC) {
	while (key != ESC) {
@@ -286,7 +278,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
		    key == KEY_UP || key == KEY_DOWN ||
		    key == KEY_UP || key == KEY_DOWN ||
		    key == '-' || key == '+' ||
		    key == '-' || key == '+' ||
		    key == KEY_PPAGE || key == KEY_NPAGE) {
		    key == KEY_PPAGE || key == KEY_NPAGE) {

			/* Remove highligt of current item */
			print_item(menu, items[(scroll + choice) * 2 + 1],
			print_item(menu, items[(scroll + choice) * 2 + 1],
				   choice, FALSE,
				   choice, FALSE,
				   (items[(scroll + choice) * 2][0] != ':'));
				   (items[(scroll + choice) * 2][0] != ':'));
@@ -364,7 +356,7 @@ int dialog_menu(const char *title, const char *prompt, int height, int width,
				   choice, TRUE, (items[(scroll + choice) * 2][0] != ':'));
				   choice, TRUE, (items[(scroll + choice) * 2][0] != ':'));


			print_arrows(dialog, item_no, scroll,
			print_arrows(dialog, item_no, scroll,
				     box_y, box_x + item_x + 1, menu_height);
				     box_y, box_x + ITEM_IDENT + 1, menu_height);


			wnoutrefresh(dialog);
			wnoutrefresh(dialog);
			wrefresh(menu);
			wrefresh(menu);