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,  		}  		if (height->unit == RESIZE_UNIT_PX) {  			resize_tiled(con, height->amount - con->height, -					RESIZE_AXIS_HORIZONTAL); +					RESIZE_AXIS_VERTICAL);  		}  	} @@ -538,34 +538,45 @@ static struct cmd_results *resize_set_floating(struct sway_container *con,  /**   * resize set <args>   * - * args: <width> [px|ppt] <height> [px|ppt] + * args: [width] <width> [px|ppt] + *     : height <height> [px|ppt] + *     : [width] <width> [px|ppt] [height] <height> [px|ppt]   */  static struct cmd_results *cmd_resize_set(int argc, char **argv) {  	struct cmd_results *error; -	if ((error = checkarg(argc, "resize", EXPECTED_AT_LEAST, 2))) { +	if ((error = checkarg(argc, "resize", EXPECTED_AT_LEAST, 1))) {  		return error;  	} -	const char *usage = "Expected 'resize set <width> <height>'"; +	const char *usage = "Expected 'resize set [width] <width> [px|ppt]' or " +		"'resize set height <height> [px|ppt]' or " +		"'resize set [width] <width> [px|ppt] [height] <height> [px|ppt]'";  	// Width -	struct resize_amount width; -	int num_consumed_args = parse_resize_amount(argc, argv, &width); -	argc -= num_consumed_args; -	argv += num_consumed_args; -	if (width.unit == RESIZE_UNIT_INVALID) { -		return cmd_results_new(CMD_INVALID, "resize", usage); +	struct resize_amount width = {0}; +	if (argc >= 2 && !strcmp(argv[0], "width") && strcmp(argv[1], "height")) { +		argc--; argv++;  	} -	if (!argc) { -		return cmd_results_new(CMD_INVALID, "resize", usage); +	if (strcmp(argv[0], "height")) { +		int num_consumed_args = parse_resize_amount(argc, argv, &width); +		argc -= num_consumed_args; +		argv += num_consumed_args; +		if (width.unit == RESIZE_UNIT_INVALID) { +			return cmd_results_new(CMD_INVALID, "resize set", usage); +		}  	}  	// Height -	struct resize_amount height; -	num_consumed_args = parse_resize_amount(argc, argv, &height); -	argc -= num_consumed_args; -	argv += num_consumed_args; -	if (height.unit == RESIZE_UNIT_INVALID) { -		return cmd_results_new(CMD_INVALID, "resize", usage); +	struct resize_amount height = {0}; +	if (argc) { +		if (argc >= 2 && !strcmp(argv[0], "height")) { +			argc--; argv++; +		} +		int num_consumed_args = parse_resize_amount(argc, argv, &height); +		argc -= num_consumed_args; +		argv += num_consumed_args; +		if (width.unit == RESIZE_UNIT_INVALID) { +			return cmd_results_new(CMD_INVALID, "resize set", usage); +		}  	}  	// 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>  	percentage points. If the units are omitted, floating containers are resized  	in px and tiled containers by ppt. _amount_ will default to 10 if omitted. -*resize set* <width> [px|ppt] <height> [px|ppt] -	Sets the width and height of the currently focused container to _width_ and -	_height_, specified in pixels or percentage points. If the units are -	omitted, floating containers are resized in px and tiled containers by ppt. -	If _width_ or _height_ is 0, no resize is done on that axis. +*resize set* height <height> [px|ppt] +	Sets the height of the container to _height_, specified in pixels or +	percentage points. If the units are omitted, floating containers are +	resized in px and tiled containers by ppt. If _height_ is 0, the container +	will not be resized. + +*resize set* [width] <width> [px|ppt] +	Sets the width of the container to _width_, specified in pixels or +	percentage points. If the units are omitted, floating containers are +	resized in px and tiled containers by ppt. If _width_ is 0, the container +	will not be resized. + +*resize set* [width] <width> [px|ppt] [height] <height> [px|ppt] +	Sets the width and height of the container to _width_ and _height_, +	specified in pixels or percentage points. If the units are omitted, +	floating containers are resized in px and tiled containers by ppt. If +	_width_ or _height_ is 0, the container will not be resized on that axis.  *scratchpad show*  	Shows a window from the scratchpad. Repeatedly using this command will | 
