diff options
-rw-r--r-- | sway/commands/resize.c | 47 | ||||
-rw-r--r-- | sway/sway.5.scd | 22 |
2 files changed, 46 insertions, 23 deletions
diff --git a/sway/commands/resize.c b/sway/commands/resize.c index 8635b309..a82bec20 100644 --- a/sway/commands/resize.c +++ b/sway/commands/resize.c | |||
@@ -499,7 +499,7 @@ static struct cmd_results *resize_set_tiled(struct sway_container *con, | |||
499 | } | 499 | } |
500 | if (height->unit == RESIZE_UNIT_PX) { | 500 | if (height->unit == RESIZE_UNIT_PX) { |
501 | resize_tiled(con, height->amount - con->height, | 501 | resize_tiled(con, height->amount - con->height, |
502 | RESIZE_AXIS_HORIZONTAL); | 502 | RESIZE_AXIS_VERTICAL); |
503 | } | 503 | } |
504 | } | 504 | } |
505 | 505 | ||
@@ -538,34 +538,45 @@ static struct cmd_results *resize_set_floating(struct sway_container *con, | |||
538 | /** | 538 | /** |
539 | * resize set <args> | 539 | * resize set <args> |
540 | * | 540 | * |
541 | * args: <width> [px|ppt] <height> [px|ppt] | 541 | * args: [width] <width> [px|ppt] |
542 | * : height <height> [px|ppt] | ||
543 | * : [width] <width> [px|ppt] [height] <height> [px|ppt] | ||
542 | */ | 544 | */ |
543 | static struct cmd_results *cmd_resize_set(int argc, char **argv) { | 545 | static struct cmd_results *cmd_resize_set(int argc, char **argv) { |
544 | struct cmd_results *error; | 546 | struct cmd_results *error; |
545 | if ((error = checkarg(argc, "resize", EXPECTED_AT_LEAST, 2))) { | 547 | if ((error = checkarg(argc, "resize", EXPECTED_AT_LEAST, 1))) { |
546 | return error; | 548 | return error; |
547 | } | 549 | } |
548 | const char *usage = "Expected 'resize set <width> <height>'"; | 550 | const char *usage = "Expected 'resize set [width] <width> [px|ppt]' or " |
551 | "'resize set height <height> [px|ppt]' or " | ||
552 | "'resize set [width] <width> [px|ppt] [height] <height> [px|ppt]'"; | ||
549 | 553 | ||
550 | // Width | 554 | // Width |
551 | struct resize_amount width; | 555 | struct resize_amount width = {0}; |
552 | int num_consumed_args = parse_resize_amount(argc, argv, &width); | 556 | if (argc >= 2 && !strcmp(argv[0], "width") && strcmp(argv[1], "height")) { |
553 | argc -= num_consumed_args; | 557 | argc--; argv++; |
554 | argv += num_consumed_args; | ||
555 | if (width.unit == RESIZE_UNIT_INVALID) { | ||
556 | return cmd_results_new(CMD_INVALID, "resize", usage); | ||
557 | } | 558 | } |
558 | if (!argc) { | 559 | if (strcmp(argv[0], "height")) { |
559 | return cmd_results_new(CMD_INVALID, "resize", usage); | 560 | int num_consumed_args = parse_resize_amount(argc, argv, &width); |
561 | argc -= num_consumed_args; | ||
562 | argv += num_consumed_args; | ||
563 | if (width.unit == RESIZE_UNIT_INVALID) { | ||
564 | return cmd_results_new(CMD_INVALID, "resize set", usage); | ||
565 | } | ||
560 | } | 566 | } |
561 | 567 | ||
562 | // Height | 568 | // Height |
563 | struct resize_amount height; | 569 | struct resize_amount height = {0}; |
564 | num_consumed_args = parse_resize_amount(argc, argv, &height); | 570 | if (argc) { |
565 | argc -= num_consumed_args; | 571 | if (argc >= 2 && !strcmp(argv[0], "height")) { |
566 | argv += num_consumed_args; | 572 | argc--; argv++; |
567 | if (height.unit == RESIZE_UNIT_INVALID) { | 573 | } |
568 | return cmd_results_new(CMD_INVALID, "resize", usage); | 574 | int num_consumed_args = parse_resize_amount(argc, argv, &height); |
575 | argc -= num_consumed_args; | ||
576 | argv += num_consumed_args; | ||
577 | if (width.unit == RESIZE_UNIT_INVALID) { | ||
578 | return cmd_results_new(CMD_INVALID, "resize set", usage); | ||
579 | } | ||
569 | } | 580 | } |
570 | 581 | ||
571 | // If 0, don't resize that dimension | 582 | // If 0, don't resize that dimension |
diff --git a/sway/sway.5.scd b/sway/sway.5.scd index 3bf6233d..8df59fc0 100644 --- a/sway/sway.5.scd +++ b/sway/sway.5.scd | |||
@@ -210,11 +210,23 @@ set|plus|minus <amount> | |||
210 | percentage points. If the units are omitted, floating containers are resized | 210 | percentage points. If the units are omitted, floating containers are resized |
211 | in px and tiled containers by ppt. _amount_ will default to 10 if omitted. | 211 | in px and tiled containers by ppt. _amount_ will default to 10 if omitted. |
212 | 212 | ||
213 | *resize set* <width> [px|ppt] <height> [px|ppt] | 213 | *resize set* height <height> [px|ppt] |
214 | Sets the width and height of the currently focused container to _width_ and | 214 | Sets the height of the container to _height_, specified in pixels or |
215 | _height_, specified in pixels or percentage points. If the units are | 215 | percentage points. If the units are omitted, floating containers are |
216 | omitted, floating containers are resized in px and tiled containers by ppt. | 216 | resized in px and tiled containers by ppt. If _height_ is 0, the container |
217 | If _width_ or _height_ is 0, no resize is done on that axis. | 217 | will not be resized. |
218 | |||
219 | *resize set* [width] <width> [px|ppt] | ||
220 | Sets the width of the container to _width_, specified in pixels or | ||
221 | percentage points. If the units are omitted, floating containers are | ||
222 | resized in px and tiled containers by ppt. If _width_ is 0, the container | ||
223 | will not be resized. | ||
224 | |||
225 | *resize set* [width] <width> [px|ppt] [height] <height> [px|ppt] | ||
226 | Sets the width and height of the container to _width_ and _height_, | ||
227 | specified in pixels or percentage points. If the units are omitted, | ||
228 | floating containers are resized in px and tiled containers by ppt. If | ||
229 | _width_ or _height_ is 0, the container will not be resized on that axis. | ||
218 | 230 | ||
219 | *scratchpad show* | 231 | *scratchpad show* |
220 | Shows a window from the scratchpad. Repeatedly using this command will | 232 | Shows a window from the scratchpad. Repeatedly using this command will |