diff options
author | Drew DeVault <sir@cmpwn.com> | 2016-09-02 19:47:37 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-09-02 19:47:37 -0400 |
commit | 29820ff826013b595e8c15d9e933767b0c965beb (patch) | |
tree | e5bae8ecc19c438091478ad878a8297252c72a81 /sway/commands/floating_mod.c | |
parent | 4e6d7b125895955e3a84583c6d61f3eb2f8a4fe9 (diff) | |
parent | 65ace5dec5c24695501056376e227fb9b1f84a3a (diff) |
Merge pull request #879 from zandrmartin/commands-refactor
refactor commands.c
Diffstat (limited to 'sway/commands/floating_mod.c')
-rw-r--r-- | sway/commands/floating_mod.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/sway/commands/floating_mod.c b/sway/commands/floating_mod.c new file mode 100644 index 00000000..b6360d9a --- /dev/null +++ b/sway/commands/floating_mod.c @@ -0,0 +1,41 @@ +#include <string.h> +#include "sway/commands.h" +#include "sway/input_state.h" +#include "list.h" +#include "log.h" +#include "stringop.h" +#include "util.h" + +struct cmd_results *cmd_floating_mod(int argc, char **argv) { + struct cmd_results *error = NULL; + if ((error = checkarg(argc, "floating_modifier", EXPECTED_AT_LEAST, 1))) { + return error; + } + int i; + list_t *split = split_string(argv[0], "+"); + config->floating_mod = 0; + + // set modifier keys + for (i = 0; i < split->length; ++i) { + config->floating_mod |= get_modifier_mask_by_name(split->items[i]); + } + free_flat_list(split); + if (!config->floating_mod) { + error = cmd_results_new(CMD_INVALID, "floating_modifier", "Unknown keys %s", argv[0]); + return error; + } + + if (argc >= 2) { + if (strcasecmp("inverse", argv[1]) == 0) { + config->dragging_key = M_RIGHT_CLICK; + config->resizing_key = M_LEFT_CLICK; + } else if (strcasecmp("normal", argv[1]) == 0) { + config->dragging_key = M_LEFT_CLICK; + config->resizing_key = M_RIGHT_CLICK; + } else { + error = cmd_results_new(CMD_INVALID, "floating_modifier", "Invalid definition %s", argv[1]); + return error; + } + } + return cmd_results_new(CMD_SUCCESS, NULL, NULL); +} |