commit 076bedb85eface4a6c41a0e99059c89186bdb275
parent 1c91d0c10ffbed14cafaba79276a14f55172b7eb
Author: emersion <contact@emersion.fr>
Date: Thu, 5 Apr 2018 18:31:19 -0400
Add container_damage_whole
Diffstat:
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);
+}