sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit 076bedb85eface4a6c41a0e99059c89186bdb275
parent 1c91d0c10ffbed14cafaba79276a14f55172b7eb
Author: emersion <contact@emersion.fr>
Date:   Thu,  5 Apr 2018 18:31:19 -0400

Add container_damage_whole

Diffstat:
Minclude/sway/output.h | 4++--
Minclude/sway/tree/container.h | 8+++++---
Msway/desktop/desktop.c | 5+++--
Msway/desktop/output.c | 4++--
Msway/tree/container.c | 13+++++++++++--
5 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/include/sway/output.h b/include/sway/output.h @@ -37,8 +37,8 @@ void output_damage_whole(struct sway_output *output); void output_damage_whole_view(struct sway_output *output, struct sway_view *view); -void output_damage_whole_surface(struct sway_output *output, - struct wlr_surface *surface, double ox, double oy); +void output_damage_whole_rect(struct sway_output *output, double ox, double oy, + int width, int height); struct sway_container *output_by_name(const char *name); diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h @@ -97,8 +97,7 @@ struct sway_container *container_create(enum sway_container_type type); const char *container_type_to_str(enum sway_container_type type); -struct sway_container *output_create( - struct sway_output *sway_output); +struct sway_container *output_create(struct sway_output *sway_output); /** * Create a new container container. A container container can be a a child of @@ -116,7 +115,8 @@ struct sway_container *output_create(struct sway_output *sway_output); * Create a new workspace container. Workspaces are children of an output * container and are ordered alphabetically by name. */ -struct sway_container *workspace_create(struct sway_container *output, const char *name); +struct sway_container *workspace_create(struct sway_container *output, + const char *name); /* * Create a new view container. A view can be a child of a workspace container @@ -182,4 +182,6 @@ bool container_has_child(struct sway_container *con, void container_create_notify(struct sway_container *container); +void container_damage_whole(struct sway_container *container); + #endif diff --git a/sway/desktop/desktop.c b/sway/desktop/desktop.c @@ -7,8 +7,9 @@ void desktop_damage_whole_surface(struct wlr_surface *surface, double lx, for (int i = 0; i < root_container.children->length; ++i) { struct sway_container *cont = root_container.children->items[i]; if (cont->type == C_OUTPUT) { - output_damage_whole_surface(cont->sway_output, surface, - lx - cont->x, ly - cont->y); + output_damage_whole_rect(cont->sway_output, + lx - cont->x, ly - cont->y, + surface->current->width, surface->current->height); } } } diff --git a/sway/desktop/output.c b/sway/desktop/output.c @@ -341,8 +341,8 @@ void output_damage_whole_view(struct sway_output *output, output_damage_whole(output); } -void output_damage_whole_surface(struct sway_output *output, - struct wlr_surface *surface, double ox, double oy) { +void output_damage_whole_rect(struct sway_output *output, + double ox, double oy, int width, int height) { // TODO output_damage_whole(output); } diff --git a/sway/tree/container.c b/sway/tree/container.c @@ -512,9 +512,18 @@ static bool find_child_func(struct sway_container *con, void *data) { bool container_has_child(struct sway_container *con, struct sway_container *child) { - if (con == NULL || con->type == C_VIEW || - con->children->length == 0) { + if (con == NULL || con->type == C_VIEW || con->children->length == 0) { return false; } return container_find(con, find_child_func, child); } + +void container_damage_whole(struct sway_container *con) { + struct sway_container *output = con; + if (output->type != C_OUTPUT) { + output = container_parent(output, C_OUTPUT); + } + + output_damage_whole_rect(output->sway_output, con->x, con->y, con->width, + con->height); +}