summaryrefslogtreecommitdiff
path: root/alsamixer/menu_widget.c
diff options
context:
space:
mode:
authorbraph <braph93@gmx.de>2019-10-03 20:18:23 +0200
committerJaroslav Kysela <perex@perex.cz>2020-07-01 16:10:35 +0200
commit0657b2a55961def14a3b288f8aad5f445ac285cd (patch)
treebdc59144735bb2ce3ebc552452526a0580468ae8 /alsamixer/menu_widget.c
parent89e746368c5a9019b86647bb12e442f5c05b0279 (diff)
downloadalsa-utils-0657b2a55961def14a3b288f8aad5f445ac285cd.tar.gz
alsamixer: small optimizations
textbox.c, mixer_display.c: - Replaced manual line drawing code `for (...) mvwaddch(...)` by the functions `mvwhline/mvwvline` provided by standard curses card_select.c, proc_files.c: - Moved duplicate code in the create() functions to menu_widget_create() in menu_widget.c card_select.c: - Removed redundant calls to sprintf() device_name.c: - Combined multiple calls to form_opts_off() - Recognize ASCII DEL (127) as backspace widget.c: - Uncommented code for setting a dummy key handler (all existing widgets do provide a key handling function) Signed-off-by: Benjamin Abendroth <braph93@gmx.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'alsamixer/menu_widget.c')
-rw-r--r--alsamixer/menu_widget.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/alsamixer/menu_widget.c b/alsamixer/menu_widget.c
index 30940a7..bf5ed52 100644
--- a/alsamixer/menu_widget.c
+++ b/alsamixer/menu_widget.c
@@ -61,3 +61,32 @@ int menu_widget_handle_key(MENU *menu, int key)
return -1;
}
}
+
+void menu_widget_create(struct widget *widget, MENU *menu, const char *title)
+{
+ int rows, columns;
+
+ if (menu)
+ unpost_menu(menu);
+
+ if (screen_lines < 3 || screen_cols < 10) {
+ widget->close();
+ beep();
+ return;
+ }
+ scale_menu(menu, &rows, &columns);
+ rows += 2;
+ columns += 2;
+ if (rows > screen_lines)
+ rows = screen_lines;
+ if (columns > screen_cols)
+ columns = screen_cols;
+
+ widget_init(widget, rows, columns, SCREEN_CENTER, SCREEN_CENTER,
+ attrs.menu, WIDGET_BORDER | WIDGET_SUBWINDOW);
+
+ mvwprintw(widget->window, 0, (columns - 2 - get_mbs_width(title)) / 2, " %s ", title);
+ set_menu_win(menu, widget->window);
+ set_menu_sub(menu, widget->subwindow);
+ post_menu(menu);
+}