mirror of
https://github.com/labwc/labwc.git
synced 2026-04-07 08:21:20 -04:00
theme: allow to set window button size (#1965)
This commit introduces new option "window.button.width". Despite the name it currently affects both width and height.
This commit is contained in:
parent
46ec513630
commit
e4afa10fe4
14 changed files with 59 additions and 33 deletions
|
|
@ -90,21 +90,21 @@ ssd_titlebar_create(struct ssd *ssd)
|
|||
|
||||
/* Title */
|
||||
add_scene_rect(&subtree->parts, LAB_SSD_PART_TITLEBAR, parent,
|
||||
width - SSD_BUTTON_WIDTH * SSD_BUTTON_COUNT, theme->title_height,
|
||||
SSD_BUTTON_WIDTH, 0, color);
|
||||
width - theme->window_button_width * SSD_BUTTON_COUNT,
|
||||
theme->title_height, theme->window_button_width, 0, color);
|
||||
/* Buttons */
|
||||
add_scene_button_corner(&subtree->parts,
|
||||
LAB_SSD_BUTTON_WINDOW_MENU, LAB_SSD_PART_CORNER_TOP_LEFT, parent,
|
||||
corner_top_left, menu_button_unpressed, menu_button_hover, 0, view);
|
||||
add_scene_button(&subtree->parts, LAB_SSD_BUTTON_ICONIFY, parent,
|
||||
color, iconify_button_unpressed, iconify_button_hover,
|
||||
width - SSD_BUTTON_WIDTH * 3, view);
|
||||
width - theme->window_button_width * 3, view);
|
||||
|
||||
/* Maximize button has an alternate state when maximized */
|
||||
struct ssd_part *btn_max_root = add_scene_button(
|
||||
&subtree->parts, LAB_SSD_BUTTON_MAXIMIZE, parent,
|
||||
color, maximize_button_unpressed, maximize_button_hover,
|
||||
width - SSD_BUTTON_WIDTH * 2, view);
|
||||
width - theme->window_button_width * 2, view);
|
||||
struct ssd_button *btn_max = node_ssd_button_from_node(btn_max_root->node);
|
||||
add_toggled_icon(btn_max, &subtree->parts, LAB_SSD_BUTTON_MAXIMIZE,
|
||||
restore_button_unpressed, restore_button_hover);
|
||||
|
|
@ -112,7 +112,7 @@ ssd_titlebar_create(struct ssd *ssd)
|
|||
add_scene_button_corner(&subtree->parts,
|
||||
LAB_SSD_BUTTON_CLOSE, LAB_SSD_PART_CORNER_TOP_RIGHT, parent,
|
||||
corner_top_right, close_button_unpressed, close_button_hover,
|
||||
width - SSD_BUTTON_WIDTH * 1, view);
|
||||
width - theme->window_button_width * 1, view);
|
||||
} FOR_EACH_END
|
||||
|
||||
ssd_update_title(ssd);
|
||||
|
|
@ -218,25 +218,25 @@ ssd_titlebar_update(struct ssd *ssd)
|
|||
case LAB_SSD_PART_TITLEBAR:
|
||||
wlr_scene_rect_set_size(
|
||||
wlr_scene_rect_from_node(part->node),
|
||||
width - SSD_BUTTON_WIDTH * SSD_BUTTON_COUNT,
|
||||
width - theme->window_button_width * SSD_BUTTON_COUNT,
|
||||
theme->title_height);
|
||||
continue;
|
||||
case LAB_SSD_BUTTON_ICONIFY:
|
||||
if (is_direct_child(part->node, subtree)) {
|
||||
wlr_scene_node_set_position(part->node,
|
||||
width - SSD_BUTTON_WIDTH * 3, 0);
|
||||
width - theme->window_button_width * 3, 0);
|
||||
}
|
||||
continue;
|
||||
case LAB_SSD_BUTTON_MAXIMIZE:
|
||||
if (is_direct_child(part->node, subtree)) {
|
||||
wlr_scene_node_set_position(part->node,
|
||||
width - SSD_BUTTON_WIDTH * 2, 0);
|
||||
width - theme->window_button_width * 2, 0);
|
||||
}
|
||||
continue;
|
||||
case LAB_SSD_PART_CORNER_TOP_RIGHT:
|
||||
if (is_direct_child(part->node, subtree)) {
|
||||
wlr_scene_node_set_position(part->node,
|
||||
width - SSD_BUTTON_WIDTH * 1, 0);
|
||||
width - theme->window_button_width * 1, 0);
|
||||
}
|
||||
continue;
|
||||
default:
|
||||
|
|
@ -288,7 +288,7 @@ ssd_update_title_positions(struct ssd *ssd)
|
|||
struct view *view = ssd->view;
|
||||
struct theme *theme = view->server->theme;
|
||||
int width = view->current.width;
|
||||
int title_bg_width = width - SSD_BUTTON_WIDTH * SSD_BUTTON_COUNT;
|
||||
int title_bg_width = width - theme->window_button_width * SSD_BUTTON_COUNT;
|
||||
|
||||
int x, y;
|
||||
int buffer_height, buffer_width;
|
||||
|
|
@ -304,7 +304,7 @@ ssd_update_title_positions(struct ssd *ssd)
|
|||
|
||||
buffer_width = part->buffer ? part->buffer->width : 0;
|
||||
buffer_height = part->buffer ? part->buffer->height : 0;
|
||||
x = SSD_BUTTON_WIDTH;
|
||||
x = theme->window_button_width;
|
||||
y = (theme->title_height - buffer_height) / 2;
|
||||
|
||||
if (title_bg_width <= 0) {
|
||||
|
|
@ -314,7 +314,7 @@ ssd_update_title_positions(struct ssd *ssd)
|
|||
wlr_scene_node_set_enabled(part->node, true);
|
||||
|
||||
if (theme->window_label_text_justify == LAB_JUSTIFY_CENTER) {
|
||||
if (buffer_width + SSD_BUTTON_WIDTH * 2 <= title_bg_width) {
|
||||
if (buffer_width + theme->window_button_width * 2 <= title_bg_width) {
|
||||
/* Center based on the full width */
|
||||
x = (width - buffer_width) / 2;
|
||||
} else {
|
||||
|
|
@ -358,7 +358,7 @@ ssd_update_title(struct ssd *ssd)
|
|||
struct ssd_sub_tree *subtree;
|
||||
struct ssd_state_title_width *dstate;
|
||||
int title_bg_width = view->current.width
|
||||
- SSD_BUTTON_WIDTH * SSD_BUTTON_COUNT;
|
||||
- theme->window_button_width * SSD_BUTTON_COUNT;
|
||||
|
||||
FOR_EACH_STATE(ssd, subtree) {
|
||||
if (subtree == &ssd->titlebar.active) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue