aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/config/output.c12
-rw-r--r--sway/tree/container.c5
2 files changed, 10 insertions, 7 deletions
diff --git a/sway/config/output.c b/sway/config/output.c
index b4e56efa..6d832cbc 100644
--- a/sway/config/output.c
+++ b/sway/config/output.c
@@ -123,11 +123,13 @@ void terminate_swaybg(pid_t pid) {
void apply_output_config(struct output_config *oc, struct sway_container *output) {
assert(output->type == C_OUTPUT);
+ struct wlr_output_layout *output_layout =
+ root_container.sway_root->output_layout;
struct wlr_output *wlr_output = output->sway_output->wlr_output;
+
if (oc && oc->enabled == 0) {
- wlr_output_layout_remove(root_container.sway_root->output_layout,
- wlr_output);
container_output_destroy(output);
+ wlr_output_layout_remove(output_layout, wlr_output);
return;
}
@@ -148,11 +150,9 @@ void apply_output_config(struct output_config *oc, struct sway_container *output
// Find position for it
if (oc && (oc->x != -1 || oc->y != -1)) {
wlr_log(L_DEBUG, "Set %s position to %d, %d", oc->name, oc->x, oc->y);
- wlr_output_layout_add(root_container.sway_root->output_layout,
- wlr_output, oc->x, oc->y);
+ wlr_output_layout_add(output_layout, wlr_output, oc->x, oc->y);
} else {
- wlr_output_layout_add_auto(root_container.sway_root->output_layout,
- wlr_output);
+ wlr_output_layout_add_auto(output_layout, wlr_output);
}
if (!oc || !oc->background) {
diff --git a/sway/tree/container.c b/sway/tree/container.c
index 4db93ce8..c686401c 100644
--- a/sway/tree/container.c
+++ b/sway/tree/container.c
@@ -160,8 +160,11 @@ struct sway_container *container_output_create(
return NULL;
}
- apply_output_config(oc, output);
+ // Insert the child before applying config so that the container coordinates
+ // get updated
container_add_child(&root_container, output);
+ apply_output_config(oc, output);
+
load_swaybars();
// Create workspace