summaryrefslogtreecommitdiff
path: root/sway/commands/resize.c
diff options
context:
space:
mode:
authorDrew DeVault <[email protected]>2018-08-26 10:49:49 -0400
committerGitHub <[email protected]>2018-08-26 10:49:49 -0400
commitdf7083a2d0842a3985747770774075a8f5ecdaef (patch)
tree2aad57ba7f7eec9fdb51b98859f6da826a4d39a1 /sway/commands/resize.c
parent1a30c50ef40e918942f96c9a399f9bf94c1c0116 (diff)
parent5dbbab7bdc56fc513eea2f9a39d722859a3b0c2e (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.c21
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;