mirror of
https://github.com/labwc/labwc.git
synced 2025-11-03 09:01:51 -05:00
ssd: respect logical size when displaying window icon
get_scale_box() was using the raw pixel size of the icon buffer for layout, which caused the icon to be incorrectly scaled up if the buffer scale was >1.
This commit is contained in:
parent
ddfaae98ad
commit
465aac5514
3 changed files with 9 additions and 9 deletions
|
|
@ -149,7 +149,7 @@ struct ssd_part *add_scene_button(struct wl_list *part_list,
|
||||||
struct lab_data_buffer *buffers[LAB_BS_ALL + 1], int x,
|
struct lab_data_buffer *buffers[LAB_BS_ALL + 1], int x,
|
||||||
struct view *view);
|
struct view *view);
|
||||||
void update_window_icon_buffer(struct wlr_scene_node *button_node,
|
void update_window_icon_buffer(struct wlr_scene_node *button_node,
|
||||||
struct wlr_buffer *buffer);
|
struct lab_data_buffer *buffer);
|
||||||
|
|
||||||
/* SSD internal helpers */
|
/* SSD internal helpers */
|
||||||
struct ssd_part *ssd_get_part(
|
struct ssd_part *ssd_get_part(
|
||||||
|
|
|
||||||
|
|
@ -80,12 +80,12 @@ add_scene_buffer(struct wl_list *list, enum ssd_part_type type,
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct wlr_box
|
static struct wlr_box
|
||||||
get_scale_box(struct wlr_buffer *buffer, double container_width,
|
get_scale_box(struct lab_data_buffer *buffer, double container_width,
|
||||||
double container_height)
|
double container_height)
|
||||||
{
|
{
|
||||||
struct wlr_box icon_geo = {
|
struct wlr_box icon_geo = {
|
||||||
.width = buffer->width,
|
.width = buffer->logical_width,
|
||||||
.height = buffer->height
|
.height = buffer->logical_height
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Scale down buffer if required */
|
/* Scale down buffer if required */
|
||||||
|
|
@ -107,7 +107,7 @@ get_scale_box(struct wlr_buffer *buffer, double container_width,
|
||||||
|
|
||||||
void
|
void
|
||||||
update_window_icon_buffer(struct wlr_scene_node *button_node,
|
update_window_icon_buffer(struct wlr_scene_node *button_node,
|
||||||
struct wlr_buffer *buffer)
|
struct lab_data_buffer *buffer)
|
||||||
{
|
{
|
||||||
struct wlr_scene_buffer *scene_buffer =
|
struct wlr_scene_buffer *scene_buffer =
|
||||||
wlr_scene_buffer_from_node(button_node);
|
wlr_scene_buffer_from_node(button_node);
|
||||||
|
|
@ -116,7 +116,7 @@ update_window_icon_buffer(struct wlr_scene_node *button_node,
|
||||||
rc.theme->window_button_width,
|
rc.theme->window_button_width,
|
||||||
rc.theme->title_height);
|
rc.theme->title_height);
|
||||||
|
|
||||||
wlr_scene_buffer_set_buffer(scene_buffer, buffer);
|
wlr_scene_buffer_set_buffer(scene_buffer, &buffer->base);
|
||||||
wlr_scene_buffer_set_dest_size(scene_buffer,
|
wlr_scene_buffer_set_dest_size(scene_buffer,
|
||||||
icon_geo.width, icon_geo.height);
|
icon_geo.width, icon_geo.height);
|
||||||
wlr_scene_node_set_position(button_node, icon_geo.x, icon_geo.y);
|
wlr_scene_node_set_position(button_node, icon_geo.x, icon_geo.y);
|
||||||
|
|
@ -145,11 +145,11 @@ add_scene_button(struct wl_list *part_list, enum ssd_part_type type,
|
||||||
if (!buffers[state_set]) {
|
if (!buffers[state_set]) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
struct wlr_buffer *icon_buffer = &buffers[state_set]->base;
|
struct lab_data_buffer *icon_buffer = buffers[state_set];
|
||||||
struct wlr_box icon_geo = get_scale_box(icon_buffer,
|
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->title_height);
|
||||||
struct ssd_part *icon_part = add_scene_buffer(part_list, type,
|
struct ssd_part *icon_part = add_scene_buffer(part_list, type,
|
||||||
parent, icon_buffer, icon_geo.x, icon_geo.y);
|
parent, &icon_buffer->base, icon_geo.x, icon_geo.y);
|
||||||
/* Make sure big icons are scaled down if necessary */
|
/* Make sure big icons are scaled down if necessary */
|
||||||
wlr_scene_buffer_set_dest_size(
|
wlr_scene_buffer_set_dest_size(
|
||||||
wlr_scene_buffer_from_node(icon_part->node),
|
wlr_scene_buffer_from_node(icon_part->node),
|
||||||
|
|
|
||||||
|
|
@ -635,7 +635,7 @@ ssd_update_window_icon(struct ssd *ssd)
|
||||||
for (uint8_t state_set = 0; state_set <= LAB_BS_ALL; state_set++) {
|
for (uint8_t state_set = 0; state_set <= LAB_BS_ALL; state_set++) {
|
||||||
if (button->nodes[state_set]) {
|
if (button->nodes[state_set]) {
|
||||||
update_window_icon_buffer(button->nodes[state_set],
|
update_window_icon_buffer(button->nodes[state_set],
|
||||||
&icon_buffer->base);
|
icon_buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} FOR_EACH_END
|
} FOR_EACH_END
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue