mirror of
https://github.com/labwc/labwc.git
synced 2025-11-06 13:29:58 -05:00
src/ssd: refactor button hover and maximize toggle
This commit is contained in:
parent
02aa000b0d
commit
1149b31c7f
4 changed files with 63 additions and 44 deletions
|
|
@ -154,10 +154,11 @@ add_scene_button(struct wl_list *part_list, enum ssd_part_type type,
|
|||
SSD_BUTTON_WIDTH, rc.theme->title_height, 0, 0, bg_color);
|
||||
|
||||
/* Icon */
|
||||
struct wlr_scene_tree *icon_tree = wlr_scene_tree_create(parent);
|
||||
struct wlr_box icon_geo = get_scale_box(icon_buffer,
|
||||
SSD_BUTTON_WIDTH, rc.theme->title_height);
|
||||
struct ssd_part *icon_part = add_scene_buffer(part_list, type,
|
||||
parent, icon_buffer, icon_geo.x, icon_geo.y);
|
||||
icon_tree, icon_buffer, icon_geo.x, icon_geo.y);
|
||||
|
||||
/* Make sure big icons are scaled down if necessary */
|
||||
wlr_scene_buffer_set_dest_size(
|
||||
|
|
@ -165,18 +166,18 @@ add_scene_button(struct wl_list *part_list, enum ssd_part_type type,
|
|||
icon_geo.width, icon_geo.height);
|
||||
|
||||
/* Hover icon */
|
||||
struct wlr_scene_tree *hover_tree = wlr_scene_tree_create(parent);
|
||||
wlr_scene_node_set_enabled(&hover_tree->node, false);
|
||||
struct wlr_box hover_geo = get_scale_box(hover_buffer,
|
||||
SSD_BUTTON_WIDTH, rc.theme->title_height);
|
||||
struct ssd_part *hover_part = add_scene_buffer(part_list, type,
|
||||
parent, hover_buffer, hover_geo.x, hover_geo.y);
|
||||
hover_tree, hover_buffer, hover_geo.x, hover_geo.y);
|
||||
|
||||
/* Make sure big icons are scaled down if necessary */
|
||||
wlr_scene_buffer_set_dest_size(
|
||||
wlr_scene_buffer_from_node(hover_part->node),
|
||||
hover_geo.width, hover_geo.height);
|
||||
|
||||
wlr_scene_node_set_enabled(hover_part->node, false);
|
||||
|
||||
struct ssd_button *button = ssd_button_descriptor_create(button_root->node);
|
||||
button->type = type;
|
||||
button->view = view;
|
||||
|
|
@ -185,6 +186,8 @@ add_scene_button(struct wl_list *part_list, enum ssd_part_type type,
|
|||
button->background = bg_rect->node;
|
||||
button->toggled = NULL;
|
||||
button->toggled_hover = NULL;
|
||||
button->icon_tree = icon_tree;
|
||||
button->hover_tree = hover_tree;
|
||||
return button_root;
|
||||
}
|
||||
|
||||
|
|
@ -194,14 +197,13 @@ add_toggled_icon(struct wl_list *part_list, enum ssd_part_type type,
|
|||
{
|
||||
struct ssd_part *part = ssd_get_part(part_list, type);
|
||||
struct ssd_button *button = node_ssd_button_from_node(part->node);
|
||||
struct wlr_scene_tree *parent = wlr_scene_tree_from_node(part->node);
|
||||
|
||||
/* Alternate icon */
|
||||
struct wlr_box icon_geo = get_scale_box(icon_buffer,
|
||||
SSD_BUTTON_WIDTH, rc.theme->title_height);
|
||||
|
||||
struct ssd_part *alticon_part = add_scene_buffer(part_list, type,
|
||||
parent, icon_buffer, icon_geo.x, icon_geo.y);
|
||||
button->icon_tree, icon_buffer, icon_geo.x, icon_geo.y);
|
||||
|
||||
wlr_scene_buffer_set_dest_size(
|
||||
wlr_scene_buffer_from_node(alticon_part->node),
|
||||
|
|
@ -212,7 +214,7 @@ add_toggled_icon(struct wl_list *part_list, enum ssd_part_type type,
|
|||
struct wlr_box hover_geo = get_scale_box(hover_buffer,
|
||||
SSD_BUTTON_WIDTH, rc.theme->title_height);
|
||||
struct ssd_part *althover_part = add_scene_buffer(part_list, type,
|
||||
parent, hover_buffer, hover_geo.x, hover_geo.y);
|
||||
button->hover_tree, hover_buffer, hover_geo.x, hover_geo.y);
|
||||
|
||||
wlr_scene_buffer_set_dest_size(
|
||||
wlr_scene_buffer_from_node(althover_part->node),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue