diff options
| author | Kenny Levinsen <kl@kl.wtf> | 2024-09-06 00:36:29 +0200 |
|---|---|---|
| committer | Alexander Orzechowski <alex@ozal.ski> | 2024-09-07 20:11:30 -0400 |
| commit | 14bff7b451d865f16e3fc82279dfba314b11269c (patch) | |
| tree | 179069a95527620f1e2006db4f8095ea69c7d294 | |
| parent | 4f9ce4675cf428e8acd632de31482981e1bedcf8 (diff) | |
desktop/transaction: Deactivate workspace on inactive outputs
If the output is not active, it might not have a valid geometry to
arrange for. Outputs do not gain a geometry until modeset, so if an
output is connected with a configuration present to disable it, it will
not have a geometry. If the output has a past workspace restored, this
will be attemtped arranged to fit a 0x0 rectangle, which asserts when
trying to sort out borders.
Consider the workspace activated only if the output itself is active to
get the scene nodes disabled.
| -rw-r--r-- | sway/desktop/transaction.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sway/desktop/transaction.c b/sway/desktop/transaction.c index 2ee5a5df..93118989 100644 --- a/sway/desktop/transaction.c +++ b/sway/desktop/transaction.c @@ -559,7 +559,7 @@ static void arrange_output(struct sway_output *output, int width, int height) { for (int i = 0; i < output->current.workspaces->length; i++) { struct sway_workspace *child = output->current.workspaces->items[i]; - bool activated = output->current.active_workspace == child; + bool activated = output->current.active_workspace == child && output->wlr_output->enabled; wlr_scene_node_reparent(&child->layers.tiling->node, output->layers.tiling); wlr_scene_node_reparent(&child->layers.fullscreen->node, output->layers.fullscreen); |
