diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-04-18 08:35:28 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-04-18 08:35:28 +1000 |
commit | 35ccdd67a89280c1d906ed914d67918cfb382e1f (patch) | |
tree | 6800043b2527e9f9baf9dba0f811d6a97a5e2ea3 /sway/desktop/output.c | |
parent | Fullscreen fixes. (diff) | |
download | sway-35ccdd67a89280c1d906ed914d67918cfb382e1f.tar.gz sway-35ccdd67a89280c1d906ed914d67918cfb382e1f.tar.zst sway-35ccdd67a89280c1d906ed914d67918cfb382e1f.zip |
More fullscreen fixes.
* Render fullscreen views without wlr function, which makes popups and
lockscreen work.
* Don't allow input events to surfaces behind fullscreen views.
* Use correct output dimensions (for rotated outputs).
Diffstat (limited to 'sway/desktop/output.c')
-rw-r--r-- | sway/desktop/output.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index 361a92d0..a5f2f71f 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c | |||
@@ -229,7 +229,11 @@ static void render_container_iterator(struct sway_container *con, | |||
229 | 229 | ||
230 | static void render_container(struct sway_output *output, | 230 | static void render_container(struct sway_output *output, |
231 | struct sway_container *con) { | 231 | struct sway_container *con) { |
232 | container_descendants(con, C_VIEW, render_container_iterator, output); | 232 | if (con->type == C_VIEW) { // Happens if a view is fullscreened |
233 | render_container_iterator(con, output); | ||
234 | } else { | ||
235 | container_descendants(con, C_VIEW, render_container_iterator, output); | ||
236 | } | ||
233 | } | 237 | } |
234 | 238 | ||
235 | static struct sway_container *output_get_active_workspace( | 239 | static struct sway_container *output_get_active_workspace( |
@@ -277,10 +281,8 @@ static void render_output(struct sway_output *output, struct timespec *when, | |||
277 | struct sway_container *workspace = output_get_active_workspace(output); | 281 | struct sway_container *workspace = output_get_active_workspace(output); |
278 | 282 | ||
279 | if (workspace->sway_workspace->fullscreen) { | 283 | if (workspace->sway_workspace->fullscreen) { |
280 | wlr_output_set_fullscreen_surface(wlr_output, | 284 | render_container(output, workspace->sway_workspace->fullscreen->swayc); |
281 | workspace->sway_workspace->fullscreen->surface); | ||
282 | } else { | 285 | } else { |
283 | wlr_output_set_fullscreen_surface(wlr_output, NULL); | ||
284 | render_layer(output, | 286 | render_layer(output, |
285 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND]); | 287 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND]); |
286 | render_layer(output, &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM]); | 288 | render_layer(output, &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_BOTTOM]); |