diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-04-05 00:17:47 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-05 00:17:47 -0400 |
commit | 9e89daf21353d3739d84ed25ae99aab82704df97 (patch) | |
tree | d7e3d910fc6646515c7869f5177a8c26cb6e35ca /sway/tree/layout.c | |
parent | aa35715f4bf840927e602004dc1612e3b049ed75 (diff) | |
parent | f77986338fc4186d003908012685c12d718ed647 (diff) |
Merge pull request #1734 from swaywm/resize-cmd
Implement resize command
Diffstat (limited to 'sway/tree/layout.c')
-rw-r--r-- | sway/tree/layout.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sway/tree/layout.c b/sway/tree/layout.c index 1769609b..65fd5d4a 100644 --- a/sway/tree/layout.c +++ b/sway/tree/layout.c @@ -729,3 +729,24 @@ struct sway_container *container_split(struct sway_container *child, return cont; } + +void container_recursive_resize(struct sway_container *container, + double amount, enum resize_edge edge) { + bool layout_match = true; + wlr_log(L_DEBUG, "Resizing %p with amount: %f", container, amount); + if (edge == RESIZE_EDGE_LEFT || edge == RESIZE_EDGE_RIGHT) { + container->width += amount; + layout_match = container->layout == L_HORIZ; + } else if (edge == RESIZE_EDGE_TOP || edge == RESIZE_EDGE_BOTTOM) { + container->height += amount; + layout_match = container->layout == L_VERT; + } + if (container->children) { + for (int i = 0; i < container->children->length; i++) { + struct sway_container *child = container->children->items[i]; + double amt = layout_match ? + amount / container->children->length : amount; + container_recursive_resize(child, amt, edge); + } + } +} |