aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sway/commands/resize.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/sway/commands/resize.c b/sway/commands/resize.c
index e69e5506..f59e2aeb 100644
--- a/sway/commands/resize.c
+++ b/sway/commands/resize.c
@@ -253,12 +253,27 @@ static struct cmd_results *resize_adjust_tiled(uint32_t axis,
amount->unit = MOVEMENT_UNIT_PPT;
}
if (amount->unit == MOVEMENT_UNIT_PPT) {
+ struct sway_container *parent = current->pending.parent;
float pct = amount->amount / 100.0f;
if (is_horizontal(axis)) {
- amount->amount = (float)current->pending.width * pct;
+ while (parent && parent->pending.layout != L_HORIZ) {
+ parent = parent->pending.parent;
+ }
+ if (parent) {
+ amount->amount = (float)parent->pending.width * pct;
+ } else {
+ amount->amount = (float)current->pending.workspace->width * pct;
+ }
} else {
- amount->amount = (float)current->pending.height * pct;
+ while (parent && parent->pending.layout != L_VERT) {
+ parent = parent->pending.parent;
+ }
+ if (parent) {
+ amount->amount = (float)parent->pending.height * pct;
+ } else {
+ amount->amount = (float)current->pending.workspace->height * pct;
+ }
}
}