diff options
author | emersion <contact@emersion.fr> | 2018-04-06 15:59:50 -0400 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2018-04-06 15:59:50 -0400 |
commit | 0c627918bb1d4c056744157b8c37fb1f62c5ca8e (patch) | |
tree | 44d90991356a0ee0a42ab0a5aabfeb963b8e0823 /sway/desktop/output.c | |
parent | 58914822aa70d69a61794c52aa2113dbe7fcc7af (diff) |
Damage all surfaces when damaging whole container
Diffstat (limited to 'sway/desktop/output.c')
-rw-r--r-- | sway/desktop/output.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 0f25cff1..db2928fd 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -401,6 +401,17 @@ void output_damage_view(struct sway_output *output, struct sway_view *view, 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, struct sway_container *con) { float scale = output->wlr_output->scale; @@ -411,6 +422,9 @@ void output_damage_whole_container(struct sway_output *output, .height = con->height * scale, }; 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) { |