aboutsummaryrefslogtreecommitdiffstats
path: root/sway/tree
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2018-04-04 21:32:31 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2018-04-05 00:03:20 -0400
commitf77986338fc4186d003908012685c12d718ed647 (patch)
treef8b1ec4af069ab2123453d713251dcd7c51767d1 /sway/tree
parentMerge pull request #1732 from emersion/view-children (diff)
downloadsway-f77986338fc4186d003908012685c12d718ed647.tar.gz
sway-f77986338fc4186d003908012685c12d718ed647.tar.zst
sway-f77986338fc4186d003908012685c12d718ed647.zip
Implement resize command
Diffstat (limited to 'sway/tree')
-rw-r--r--sway/tree/layout.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/sway/tree/layout.c b/sway/tree/layout.c
index 5abdbc32..7e2c61ed 100644
--- a/sway/tree/layout.c
+++ b/sway/tree/layout.c
@@ -729,3 +729,24 @@ struct sway_container *container_split(struct sway_container *child,
729 729
730 return cont; 730 return cont;
731} 731}
732
733void container_recursive_resize(struct sway_container *container,
734 double amount, enum resize_edge edge) {
735 bool layout_match = true;
736 wlr_log(L_DEBUG, "Resizing %p with amount: %f", container, amount);
737 if (edge == RESIZE_EDGE_LEFT || edge == RESIZE_EDGE_RIGHT) {
738 container->width += amount;
739 layout_match = container->layout == L_HORIZ;
740 } else if (edge == RESIZE_EDGE_TOP || edge == RESIZE_EDGE_BOTTOM) {
741 container->height += amount;
742 layout_match = container->layout == L_VERT;
743 }
744 if (container->children) {
745 for (int i = 0; i < container->children->length; i++) {
746 struct sway_container *child = container->children->items[i];
747 double amt = layout_match ?
748 amount / container->children->length : amount;
749 container_recursive_resize(child, amt, edge);
750 }
751 }
752}