menu: use theme->menu_item_height instead of menu->item_height

...and set it in theme.c post_processing()
This commit is contained in:
Johan Malm 2024-08-15 20:54:49 +01:00
parent ab178cc705
commit 4fb4ba5969
4 changed files with 12 additions and 14 deletions

View file

@ -53,7 +53,6 @@ struct menuitem {
struct menu { struct menu {
char *id; char *id;
char *label; char *label;
int item_height;
struct menu *parent; struct menu *parent;
struct { struct {

View file

@ -61,6 +61,7 @@ struct theme {
int menu_item_padding_x; int menu_item_padding_x;
int menu_item_padding_y; int menu_item_padding_y;
int menu_item_height;
float menu_items_bg_color[4]; float menu_items_bg_color[4];
float menu_items_text_color[4]; float menu_items_text_color[4];

View file

@ -200,12 +200,7 @@ item_create(struct menu *menu, const char *text, bool show_arrow)
const char *arrow = show_arrow ? "" : NULL; const char *arrow = show_arrow ? "" : NULL;
/* TODO: Consider setting this somewhere else */ menuitem->height = theme->menu_item_height;
if (!menu->item_height) {
menu->item_height = font_height(&rc.font_menuitem)
+ 2 * theme->menu_item_padding_y;
}
menuitem->height = menu->item_height;
int x, y; int x, y;
menuitem->native_width = font_width(&rc.font_menuitem, text); menuitem->native_width = font_width(&rc.font_menuitem, text);
@ -225,11 +220,11 @@ item_create(struct menu *menu, const char *text, bool show_arrow)
/* Item background nodes */ /* Item background nodes */
menuitem->normal.background = &wlr_scene_rect_create( menuitem->normal.background = &wlr_scene_rect_create(
menuitem->normal.tree, menuitem->normal.tree,
menu->size.width, menu->item_height, menu->size.width, theme->menu_item_height,
theme->menu_items_bg_color)->node; theme->menu_items_bg_color)->node;
menuitem->selected.background = &wlr_scene_rect_create( menuitem->selected.background = &wlr_scene_rect_create(
menuitem->selected.tree, menuitem->selected.tree,
menu->size.width, menu->item_height, menu->size.width, theme->menu_item_height,
theme->menu_items_active_bg_color)->node; theme->menu_items_active_bg_color)->node;
/* Font nodes */ /* Font nodes */
@ -258,9 +253,9 @@ item_create(struct menu *menu, const char *text, bool show_arrow)
/* Center font nodes */ /* Center font nodes */
x = theme->menu_item_padding_x; x = theme->menu_item_padding_x;
y = (menu->item_height - menuitem->normal.buffer->height) / 2; y = (theme->menu_item_height - menuitem->normal.buffer->height) / 2;
wlr_scene_node_set_position(menuitem->normal.text, x, y); wlr_scene_node_set_position(menuitem->normal.text, x, y);
y = (menu->item_height - menuitem->selected.buffer->height) / 2; y = (theme->menu_item_height - menuitem->selected.buffer->height) / 2;
wlr_scene_node_set_position(menuitem->selected.text, x, y); wlr_scene_node_set_position(menuitem->selected.text, x, y);
/* Position the item in relation to its menu */ /* Position the item in relation to its menu */
@ -289,7 +284,7 @@ separator_create(struct menu *menu, const char *label)
struct theme *theme = server->theme; struct theme *theme = server->theme;
if (menuitem->type == LAB_MENU_TITLE) { if (menuitem->type == LAB_MENU_TITLE) {
menuitem->height = menu->item_height; menuitem->height = theme->menu_item_height;
menuitem->native_width = font_width(&rc.font_menuitem, label); menuitem->native_width = font_width(&rc.font_menuitem, label);
} else if (menuitem->type == LAB_MENU_SEPARATOR_LINE) { } else if (menuitem->type == LAB_MENU_SEPARATOR_LINE) {
menuitem->height = theme->menu_separator_line_thickness + menuitem->height = theme->menu_separator_line_thickness +
@ -328,7 +323,7 @@ separator_create(struct menu *menu, const char *label)
/* Center font nodes */ /* Center font nodes */
int x, y; int x, y;
x = theme->menu_item_padding_x; x = theme->menu_item_padding_x;
y = (menu->item_height - menuitem->normal.buffer->height) / 2; y = (theme->menu_item_height - menuitem->normal.buffer->height) / 2;
wlr_scene_node_set_position(menuitem->normal.text, x, y); wlr_scene_node_set_position(menuitem->normal.text, x, y);
} else { } else {
int nominal_width = theme->menu_min_width; int nominal_width = theme->menu_min_width;
@ -836,7 +831,7 @@ menu_configure(struct menu *menu, int lx, int ly, enum menu_align align)
ly -= menu->size.height; ly -= menu->size.height;
if (menu->parent) { if (menu->parent) {
/* For submenus adjust y to bottom left corner */ /* For submenus adjust y to bottom left corner */
ly += menu->item_height; ly += theme->menu_item_height;
} }
} }
wlr_scene_node_set_position(&menu->scene_tree->node, lx, ly); wlr_scene_node_set_position(&menu->scene_tree->node, lx, ly);

View file

@ -1305,6 +1305,9 @@ post_processing(struct theme *theme)
theme->title_height = h + 2 * theme->padding_height; theme->title_height = h + 2 * theme->padding_height;
} }
theme->menu_item_height = font_height(&rc.font_menuitem)
+ 2 * theme->menu_item_padding_y;
theme->osd_window_switcher_item_height = font_height(&rc.font_osd) theme->osd_window_switcher_item_height = font_height(&rc.font_osd)
+ 2 * theme->osd_window_switcher_item_padding_y + 2 * theme->osd_window_switcher_item_padding_y
+ 2 * theme->osd_window_switcher_item_active_border_width; + 2 * theme->osd_window_switcher_item_active_border_width;