aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar emersion <contact@emersion.fr>2018-04-07 13:21:52 -0400
committerLibravatar GitHub <noreply@github.com>2018-04-07 13:21:52 -0400
commita5d06b6e2b52d535fca25adf143f27233a3609c5 (patch)
treebd33d9f21a6e7e9b2cde9efdee196c162762b953
parentAdd basic server decorations support (diff)
parentFix output containers position (diff)
downloadsway-a5d06b6e2b52d535fca25adf143f27233a3609c5.tar.gz
sway-a5d06b6e2b52d535fca25adf143f27233a3609c5.tar.zst
sway-a5d06b6e2b52d535fca25adf143f27233a3609c5.zip
Merge pull request #1766 from emersion/fix-output-container-position
Fix output containers position
-rw-r--r--sway/tree/layout.c37
1 files changed, 9 insertions, 28 deletions
diff --git a/sway/tree/layout.c b/sway/tree/layout.c
index 78af8b8c..e81facc6 100644
--- a/sway/tree/layout.c
+++ b/sway/tree/layout.c
@@ -30,26 +30,7 @@ static void output_layout_handle_change(struct wl_listener *listener,
30 root_container.width = layout_box->width; 30 root_container.width = layout_box->width;
31 root_container.height = layout_box->height; 31 root_container.height = layout_box->height;
32 32
33 for (int i = 0 ; i < root_container.children->length; ++i) { 33 arrange_windows(&root_container, layout_box->width, layout_box->height);
34 struct sway_container *output_container =
35 root_container.children->items[i];
36 if (output_container->type != C_OUTPUT) {
37 continue;
38 }
39 struct sway_output *output = output_container->sway_output;
40
41 const struct wlr_box *output_box =
42 wlr_output_layout_get_box(output_layout, output->wlr_output);
43 if (!output_box) {
44 continue;
45 }
46 output_container->x = output_box->x;
47 output_container->y = output_box->y;
48 output_container->width = output_box->width;
49 output_container->height = output_box->height;
50 }
51
52 arrange_windows(&root_container, -1, -1);
53} 34}
54 35
55struct sway_container *container_set_layout(struct sway_container *container, 36struct sway_container *container_set_layout(struct sway_container *container,
@@ -551,19 +532,19 @@ void arrange_windows(struct sway_container *container,
551 case C_ROOT: 532 case C_ROOT:
552 for (i = 0; i < container->children->length; ++i) { 533 for (i = 0; i < container->children->length; ++i) {
553 struct sway_container *output = container->children->items[i]; 534 struct sway_container *output = container->children->items[i];
535 const struct wlr_box *output_box = wlr_output_layout_get_box(
536 container->sway_root->output_layout,
537 output->sway_output->wlr_output);
538 output->x = output_box->x;
539 output->y = output_box->y;
540 output->width = output_box->width;
541 output->height = output_box->height;
554 wlr_log(L_DEBUG, "Arranging output '%s' at %f,%f", 542 wlr_log(L_DEBUG, "Arranging output '%s' at %f,%f",
555 output->name, output->x, output->y); 543 output->name, output->x, output->y);
556 arrange_windows(output, -1, -1); 544 arrange_windows(output, output_box->width, output_box->height);
557 } 545 }
558 return; 546 return;
559 case C_OUTPUT: 547 case C_OUTPUT:
560 {
561 int _width, _height;
562 wlr_output_effective_resolution(
563 container->sway_output->wlr_output, &_width, &_height);
564 width = container->width = _width;
565 height = container->height = _height;
566 }
567 // arrange all workspaces: 548 // arrange all workspaces:
568 for (i = 0; i < container->children->length; ++i) { 549 for (i = 0; i < container->children->length; ++i) {
569 struct sway_container *child = container->children->items[i]; 550 struct sway_container *child = container->children->items[i];