diff options
author | braph <braph93@gmx.de> | 2019-10-03 20:18:23 +0200 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2020-07-01 16:10:35 +0200 |
commit | 0657b2a55961def14a3b288f8aad5f445ac285cd (patch) | |
tree | bdc59144735bb2ce3ebc552452526a0580468ae8 /alsamixer/menu_widget.c | |
parent | 89e746368c5a9019b86647bb12e442f5c05b0279 (diff) | |
download | alsa-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.c | 29 |
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); +} |