diff options
author | Zandr Martin <zandrmartin@gmail.com> | 2016-06-11 17:02:16 -0500 |
---|---|---|
committer | Zandr Martin <zandrmartin@gmail.com> | 2016-06-11 17:02:16 -0500 |
commit | 889618d3eeb5786df45e1e4885debe610932fc31 (patch) | |
tree | a73c7e86319900670d4894894902420d9eb9dd72 /sway/commands.c | |
parent | Merge pull request #701 from zandrmartin/assign-command (diff) | |
download | sway-889618d3eeb5786df45e1e4885debe610932fc31.tar.gz sway-889618d3eeb5786df45e1e4885debe610932fc31.tar.zst sway-889618d3eeb5786df45e1e4885debe610932fc31.zip |
implement resize command for absolute dimensions
Diffstat (limited to 'sway/commands.c')
-rw-r--r-- | sway/commands.c | 37 |
1 files changed, 21 insertions, 16 deletions
diff --git a/sway/commands.c b/sway/commands.c index 5e84ea9a..4009997b 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -2000,33 +2000,38 @@ static struct cmd_results *cmd_resize(int argc, char **argv) { | |||
2000 | struct cmd_results *error = NULL; | 2000 | struct cmd_results *error = NULL; |
2001 | if (config->reading) return cmd_results_new(CMD_FAILURE, "resize", "Can't be used in config file."); | 2001 | if (config->reading) return cmd_results_new(CMD_FAILURE, "resize", "Can't be used in config file."); |
2002 | if (!config->active) return cmd_results_new(CMD_FAILURE, "resize", "Can only be used when sway is running."); | 2002 | if (!config->active) return cmd_results_new(CMD_FAILURE, "resize", "Can only be used when sway is running."); |
2003 | if ((error = checkarg(argc, "resize", EXPECTED_AT_LEAST, 3))) { | 2003 | if ((error = checkarg(argc, "resize", EXPECTED_AT_LEAST, 2))) { |
2004 | return error; | 2004 | return error; |
2005 | } | 2005 | } |
2006 | char *end; | 2006 | |
2007 | int amount = (int)strtol(argv[2], &end, 10); | 2007 | int amount = (int)strtol(argv[argc - 1], NULL, 10); |
2008 | if (errno == ERANGE || amount == 0) { | 2008 | if (errno == ERANGE || amount == 0) { |
2009 | errno = 0; | 2009 | errno = 0; |
2010 | return cmd_results_new(CMD_INVALID, "resize", "Number is out of range."); | 2010 | return cmd_results_new(CMD_INVALID, "resize", "Number is out of range."); |
2011 | } | 2011 | } |
2012 | 2012 | ||
2013 | if (strcmp(argv[0], "shrink") != 0 && strcmp(argv[0], "grow") != 0) { | 2013 | if (strcmp(argv[0], "shrink") == 0 || strcmp(argv[0], "grow") == 0) { |
2014 | return cmd_results_new(CMD_INVALID, "resize", | 2014 | if (strcmp(argv[0], "shrink") == 0) { |
2015 | "Expected 'resize <shrink|grow> <width|height> <amount>'"); | 2015 | amount *= -1; |
2016 | } | 2016 | } |
2017 | |||
2018 | if (strcmp(argv[0], "shrink") == 0) { | ||
2019 | amount *= -1; | ||
2020 | } | ||
2021 | 2017 | ||
2022 | if (strcmp(argv[1], "width") == 0) { | 2018 | if (strcmp(argv[1], "width") == 0) { |
2023 | resize_tiled(amount, true); | 2019 | resize_tiled(amount, true); |
2024 | } else if (strcmp(argv[1], "height") == 0) { | 2020 | } else if (strcmp(argv[1], "height") == 0) { |
2025 | resize_tiled(amount, false); | 2021 | resize_tiled(amount, false); |
2022 | } else { | ||
2023 | return cmd_results_new(CMD_INVALID, "resize", | ||
2024 | "Expected 'resize <shrink|grow> <width|height> <amount>' or 'resize <width|height> <amount>'"); | ||
2025 | } | ||
2026 | } else if (strcmp(argv[0], "width") == 0) { | ||
2027 | set_size_tiled(amount, true); | ||
2028 | } else if (strcmp(argv[0], "height") == 0) { | ||
2029 | set_size_tiled(amount, false); | ||
2026 | } else { | 2030 | } else { |
2027 | return cmd_results_new(CMD_INVALID, "resize", | 2031 | return cmd_results_new(CMD_INVALID, "resize", |
2028 | "Expected 'resize <shrink|grow> <width|height> <amount>'"); | 2032 | "Expected 'resize <shrink|grow> <width|height> <amount>' or 'resize <width|height> <amount>'"); |
2029 | } | 2033 | } |
2034 | |||
2030 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); | 2035 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); |
2031 | } | 2036 | } |
2032 | 2037 | ||