diff options
Diffstat (limited to 'sway/tree/layout.c')
-rw-r--r-- | sway/tree/layout.c | 37 |
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 | ||
55 | struct sway_container *container_set_layout(struct sway_container *container, | 36 | struct 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]; |