diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2018-11-25 17:41:45 +0100 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2018-11-25 17:41:45 +0100 |
| commit | a9ba7d5d48785bb2d00837f4a6ec120f2ef1bd87 (patch) | |
| tree | 34e05cda5a5ee1e95a1df679d0aa08e88e720554 | |
| parent | 446e2308a482f94063e0bd4cb35e40dfb8eab5dc (diff) | |
| parent | d8d9399f99f0041953dd69998d571b3bb1184e6e (diff) | |
Merge pull request #3184 from kupospelov/fix-resize
resize set: fix units for floating containers
| -rw-r--r-- | sway/commands/resize.c | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/sway/commands/resize.c b/sway/commands/resize.c index a90d578e..cf5dea02 100644 --- a/sway/commands/resize.c +++ b/sway/commands/resize.c @@ -512,34 +512,42 @@ static struct cmd_results *resize_set_floating(struct sway_container *con, calculate_constraints(&min_width, &max_width, &min_height, &max_height); if (width->amount) { - if (width->unit == RESIZE_UNIT_PPT || - width->unit == RESIZE_UNIT_DEFAULT) { + switch (width->unit) { + case RESIZE_UNIT_PPT: // Convert to px width->amount = con->workspace->width * width->amount / 100; width->unit = RESIZE_UNIT_PX; - } - if (width->unit == RESIZE_UNIT_PX) { + // Falls through + case RESIZE_UNIT_PX: + case RESIZE_UNIT_DEFAULT: width->amount = fmax(min_width, fmin(width->amount, max_width)); grow_width = width->amount - con->width; - con->x -= grow_width / 2; con->width = width->amount; + break; + case RESIZE_UNIT_INVALID: + sway_assert(false, "invalid width unit"); + break; } } if (height->amount) { - if (height->unit == RESIZE_UNIT_PPT || - height->unit == RESIZE_UNIT_DEFAULT) { + switch (height->unit) { + case RESIZE_UNIT_PPT: // Convert to px height->amount = con->workspace->height * height->amount / 100; height->unit = RESIZE_UNIT_PX; - } - if (height->unit == RESIZE_UNIT_PX) { + // Falls through + case RESIZE_UNIT_PX: + case RESIZE_UNIT_DEFAULT: height->amount = fmax(min_height, fmin(height->amount, max_height)); grow_height = height->amount - con->height; - con->y -= grow_height / 2; con->height = height->amount; + break; + case RESIZE_UNIT_INVALID: + sway_assert(false, "invalid height unit"); + break; } } |
