aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2024-09-06 00:36:29 +0200
committerFurkan Sahin <furkan-dev@proton.me>2024-09-06 00:36:29 +0200
commite1ca7a4e53d2a1ff9404e3292d23b111d35692bf (patch)
tree179069a95527620f1e2006db4f8095ea69c7d294
parent3a85bd68bc15d106981d0eb3a87fd92c3802ce47 (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.c2
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);