diff options
author | Drew DeVault <[email protected]> | 2018-08-26 10:49:49 -0400 |
---|---|---|
committer | GitHub <[email protected]> | 2018-08-26 10:49:49 -0400 |
commit | df7083a2d0842a3985747770774075a8f5ecdaef (patch) | |
tree | 2aad57ba7f7eec9fdb51b98859f6da826a4d39a1 /sway/commands/resize.c | |
parent | 1a30c50ef40e918942f96c9a399f9bf94c1c0116 (diff) | |
parent | 5dbbab7bdc56fc513eea2f9a39d722859a3b0c2e (diff) |
Merge pull request #2515 from RyanDwyer/remove-layout-file
Remove layout.c
Diffstat (limited to 'sway/commands/resize.c')
-rw-r--r-- | sway/commands/resize.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sway/commands/resize.c b/sway/commands/resize.c index ea1e36ff..ad659ef5 100644 --- a/sway/commands/resize.c +++ b/sway/commands/resize.c @@ -159,6 +159,27 @@ static int parallel_size(struct sway_container *c, enum resize_axis a) { return normalize_axis(a) == RESIZE_AXIS_HORIZONTAL ? c->width : c->height; } +static void container_recursive_resize(struct sway_container *container, + double amount, enum wlr_edges edge) { + bool layout_match = true; + wlr_log(WLR_DEBUG, "Resizing %p with amount: %f", container, amount); + if (edge == WLR_EDGE_LEFT || edge == WLR_EDGE_RIGHT) { + container->width += amount; + layout_match = container->layout == L_HORIZ; + } else if (edge == WLR_EDGE_TOP || edge == WLR_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); + } + } +} + static void resize_tiled(struct sway_container *parent, int amount, enum resize_axis axis) { struct sway_container *focused = parent; |