Damage all surfaces when damaging whole container

This commit is contained in:
emersion 2018-04-06 15:59:50 -04:00
parent 58914822aa
commit 0c627918bb
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48

View file

@ -401,6 +401,17 @@ void output_damage_view(struct sway_output *output, struct sway_view *view,
damage_surface_iterator, &data); damage_surface_iterator, &data);
} }
static void output_damage_whole_container_iterator(struct sway_container *con,
void *data) {
struct sway_output *output = data;
if (!sway_assert(con->type != C_VIEW, "expected a view")) {
return;
}
output_damage_view(output, con->sway_view, true);
}
void output_damage_whole_container(struct sway_output *output, void output_damage_whole_container(struct sway_output *output,
struct sway_container *con) { struct sway_container *con) {
float scale = output->wlr_output->scale; float scale = output->wlr_output->scale;
@ -411,6 +422,9 @@ void output_damage_whole_container(struct sway_output *output,
.height = con->height * scale, .height = con->height * scale,
}; };
wlr_output_damage_add_box(output->damage, &box); wlr_output_damage_add_box(output->damage, &box);
container_descendants(con, C_VIEW, output_damage_whole_container_iterator,
output);
} }
static void damage_handle_destroy(struct wl_listener *listener, void *data) { static void damage_handle_destroy(struct wl_listener *listener, void *data) {