]> git.mdlowis.com Git - proto/labwc.git/commitdiff
menu: use theme->menu_item_height instead of menu->item_height
authorJohan Malm <jgm323@gmail.com>
Thu, 15 Aug 2024 19:54:49 +0000 (20:54 +0100)
committerJohan Malm <johanmalm@users.noreply.github.com>
Tue, 20 Aug 2024 17:01:22 +0000 (18:01 +0100)
...and set it in theme.c post_processing()

include/menu/menu.h
include/theme.h
src/menu/menu.c
src/theme.c

index 9edf8b76eb4e5a6c8655243ffd9a816f5ab450fa..980eaa7c1a441f6c9fa55236bc0c625d59c5fcb8 100644 (file)
@@ -54,7 +54,6 @@ struct menuitem {
 struct menu {
        char *id;
        char *label;
-       int item_height;
        struct menu *parent;
 
        struct {
index 9791f7e98423568802d4f5f4afb0f8ad99efc226..4ad3855cd71fe672ffead5f7ea9030c341267689 100644 (file)
@@ -61,6 +61,7 @@ struct theme {
 
        int menu_item_padding_x;
        int menu_item_padding_y;
+       int menu_item_height;
 
        float menu_items_bg_color[4];
        float menu_items_text_color[4];
index 98b214ffd25e64c0801058627ea92e724eec38ca..1abef56acc0dbdb537080f6cbf4810e54fa86b52 100644 (file)
@@ -210,12 +210,7 @@ item_create(struct menu *menu, const char *text, bool show_arrow)
 
        const char *arrow = show_arrow ? "›" : NULL;
 
-       /* TODO: Consider setting this somewhere else */
-       if (!menu->item_height) {
-               menu->item_height = font_height(&rc.font_menuitem)
-                       + 2 * theme->menu_item_padding_y;
-       }
-       menuitem->height = menu->item_height;
+       menuitem->height = theme->menu_item_height;
 
        int x, y;
        menuitem->native_width = font_width(&rc.font_menuitem, text);
@@ -235,11 +230,11 @@ item_create(struct menu *menu, const char *text, bool show_arrow)
        /* Item background nodes */
        menuitem->normal.background = &wlr_scene_rect_create(
                menuitem->normal.tree,
-               menu->size.width, menu->item_height,
+               menu->size.width, theme->menu_item_height,
                theme->menu_items_bg_color)->node;
        menuitem->selected.background = &wlr_scene_rect_create(
                menuitem->selected.tree,
-               menu->size.width, menu->item_height,
+               menu->size.width, theme->menu_item_height,
                theme->menu_items_active_bg_color)->node;
 
        /* Font nodes */
@@ -268,9 +263,9 @@ item_create(struct menu *menu, const char *text, bool show_arrow)
 
        /* Center font nodes */
        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);
-       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);
 
        /* Position the item in relation to its menu */
@@ -299,7 +294,7 @@ separator_create(struct menu *menu, const char *label)
        struct theme *theme = server->theme;
 
        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);
        } else if (menuitem->type == LAB_MENU_SEPARATOR_LINE) {
                menuitem->height = theme->menu_separator_line_thickness +
@@ -338,7 +333,7 @@ separator_create(struct menu *menu, const char *label)
                /* Center font nodes */
                int x, y;
                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);
        } else {
                int nominal_width = theme->menu_min_width;
@@ -849,7 +844,7 @@ menu_configure(struct menu *menu, int lx, int ly, enum menu_align align)
                ly -= menu->size.height;
                if (menu->parent) {
                        /* 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);
index fe8dc115296f68ad0cf5d9f1aa98264c32d66e3c..a22d09361608d0862b1f05d25557e27d52aa48bc 100644 (file)
@@ -1305,6 +1305,9 @@ post_processing(struct theme *theme)
                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)
                + 2 * theme->osd_window_switcher_item_padding_y
                + 2 * theme->osd_window_switcher_item_active_border_width;