mirror of
https://github.com/labwc/labwc.git
synced 2025-11-07 13:30:06 -05:00
theme: add window.button.height
window.button.{height,width} determine the space allocated for buttons.
Buttons can be smaller than this size and will then just be center aligned
within the allocated space. However, buttons will be clamped at this size
to prevent them from going outside of the allocated space.
This commit is contained in:
parent
be18050479
commit
0aa4cfe32d
5 changed files with 32 additions and 16 deletions
|
|
@ -97,7 +97,7 @@ update_window_icon_buffer(struct wlr_scene_node *button_node,
|
|||
|
||||
struct wlr_box icon_geo = get_scale_box(buffer,
|
||||
rc.theme->window_button_width,
|
||||
rc.theme->title_height);
|
||||
rc.theme->window_button_height);
|
||||
|
||||
wlr_scene_buffer_set_buffer(scene_buffer, &buffer->base);
|
||||
wlr_scene_buffer_set_dest_size(scene_buffer,
|
||||
|
|
@ -109,17 +109,17 @@ struct ssd_part *
|
|||
add_scene_button(struct wl_list *part_list, enum ssd_part_type type,
|
||||
struct wlr_scene_tree *parent,
|
||||
struct lab_data_buffer *buffers[LAB_BS_ALL + 1],
|
||||
int x, struct view *view)
|
||||
int x, int y, struct view *view)
|
||||
{
|
||||
struct ssd_part *button_root = add_scene_part(part_list, type);
|
||||
parent = wlr_scene_tree_create(parent);
|
||||
button_root->node = &parent->node;
|
||||
wlr_scene_node_set_position(button_root->node, x, 0);
|
||||
wlr_scene_node_set_position(button_root->node, x, y);
|
||||
|
||||
/* Hitbox */
|
||||
float invisible[4] = { 0, 0, 0, 0 };
|
||||
add_scene_rect(part_list, type, parent,
|
||||
rc.theme->window_button_width, rc.theme->title_height, 0, 0,
|
||||
rc.theme->window_button_width, rc.theme->window_button_height, 0, 0,
|
||||
invisible);
|
||||
|
||||
/* Icons */
|
||||
|
|
@ -130,7 +130,7 @@ add_scene_button(struct wl_list *part_list, enum ssd_part_type type,
|
|||
}
|
||||
struct lab_data_buffer *icon_buffer = buffers[state_set];
|
||||
struct wlr_box icon_geo = get_scale_box(icon_buffer,
|
||||
rc.theme->window_button_width, rc.theme->title_height);
|
||||
rc.theme->window_button_width, rc.theme->window_button_height);
|
||||
struct ssd_part *icon_part = add_scene_buffer(part_list, type,
|
||||
parent, &icon_buffer->base, icon_geo.x, icon_geo.y);
|
||||
/* Make sure big icons are scaled down if necessary */
|
||||
|
|
|
|||
|
|
@ -75,11 +75,15 @@ ssd_titlebar_create(struct ssd *ssd)
|
|||
/* Buttons */
|
||||
struct title_button *b;
|
||||
int x = theme->padding_width;
|
||||
|
||||
/* Center vertically within titlebar */
|
||||
int y = (theme->title_height - theme->window_button_height) / 2;
|
||||
|
||||
wl_list_for_each(b, &rc.title_buttons_left, link) {
|
||||
struct lab_data_buffer **buffers =
|
||||
theme->window[active].buttons[b->type];
|
||||
add_scene_button(&subtree->parts, b->type, parent,
|
||||
buffers, x, view);
|
||||
buffers, x, y, view);
|
||||
x += theme->window_button_width + theme->window_button_spacing;
|
||||
}
|
||||
|
||||
|
|
@ -89,7 +93,7 @@ ssd_titlebar_create(struct ssd *ssd)
|
|||
struct lab_data_buffer **buffers =
|
||||
theme->window[active].buttons[b->type];
|
||||
add_scene_button(&subtree->parts, b->type, parent,
|
||||
buffers, x, view);
|
||||
buffers, x, y, view);
|
||||
}
|
||||
} FOR_EACH_END
|
||||
|
||||
|
|
@ -293,6 +297,8 @@ ssd_titlebar_update(struct ssd *ssd)
|
|||
|
||||
update_visible_buttons(ssd);
|
||||
|
||||
/* Center buttons vertically within titlebar */
|
||||
int y = (theme->title_height - theme->window_button_height) / 2;
|
||||
int x;
|
||||
struct ssd_part *part;
|
||||
struct ssd_sub_tree *subtree;
|
||||
|
|
@ -307,7 +313,7 @@ ssd_titlebar_update(struct ssd *ssd)
|
|||
x = theme->padding_width;
|
||||
wl_list_for_each(b, &rc.title_buttons_left, link) {
|
||||
part = ssd_get_part(&subtree->parts, b->type);
|
||||
wlr_scene_node_set_position(part->node, x, 0);
|
||||
wlr_scene_node_set_position(part->node, x, y);
|
||||
x += theme->window_button_width + theme->window_button_spacing;
|
||||
}
|
||||
|
||||
|
|
@ -319,7 +325,7 @@ ssd_titlebar_update(struct ssd *ssd)
|
|||
wl_list_for_each_reverse(b, &rc.title_buttons_right, link) {
|
||||
part = ssd_get_part(&subtree->parts, b->type);
|
||||
x -= theme->window_button_width + theme->window_button_spacing;
|
||||
wlr_scene_node_set_position(part->node, x, 0);
|
||||
wlr_scene_node_set_position(part->node, x, y);
|
||||
}
|
||||
} FOR_EACH_END
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue