aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/split.c
diff options
context:
space:
mode:
authorLibravatar Tony Crisci <tony@dubstepdish.com>2018-04-02 20:12:18 -0400
committerLibravatar Tony Crisci <tony@dubstepdish.com>2018-04-02 20:12:18 -0400
commit32ef182f474dbb40c4bedb69256ca6ec8bd31039 (patch)
tree6c0d05d8605ff5bec4d87a2064e46e6e8cb25385 /sway/commands/split.c
parentMerge branch 'wlroots' into split-containers (diff)
downloadsway-32ef182f474dbb40c4bedb69256ca6ec8bd31039.tar.gz
sway-32ef182f474dbb40c4bedb69256ca6ec8bd31039.tar.zst
sway-32ef182f474dbb40c4bedb69256ca6ec8bd31039.zip
cleanup split command handlers
Diffstat (limited to 'sway/commands/split.c')
-rw-r--r--sway/commands/split.c65
1 files changed, 27 insertions, 38 deletions
diff --git a/sway/commands/split.c b/sway/commands/split.c
index ca116aef..ab8565a9 100644
--- a/sway/commands/split.c
+++ b/sway/commands/split.c
@@ -8,58 +8,33 @@
8#include "sway/input/seat.h" 8#include "sway/input/seat.h"
9#include "log.h" 9#include "log.h"
10 10
11static struct cmd_results *_do_split(int argc, char **argv, int layout) { 11static struct cmd_results *do_split(int layout) {
12 char *name = layout == L_VERT ? "splitv" : 12 struct sway_container *con = config->handler_context.current_container;
13 layout == L_HORIZ ? "splith" : "split"; 13 struct sway_container *parent = container_split(con, layout);
14 struct cmd_results *error = NULL;
15 if (config->reading) {
16 return cmd_results_new(CMD_FAILURE, name,
17 "Can't be used in config file.");
18 }
19 if (!config->active) {
20 return cmd_results_new(CMD_FAILURE, name,
21 "Can only be used when sway is running.");
22 }
23 if ((error = checkarg(argc, name, EXPECTED_EQUAL_TO, 0))) {
24 return error;
25 }
26
27 struct sway_container *focused = config->handler_context.current_container;
28 struct sway_container *parent = container_split(focused, layout);
29 arrange_windows(parent, -1, -1); 14 arrange_windows(parent, -1, -1);
30 15
31 // TODO borders: update borders
32
33 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 16 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
34} 17}
35 18
36struct cmd_results *cmd_split(int argc, char **argv) { 19struct cmd_results *cmd_split(int argc, char **argv) {
37 struct cmd_results *error = NULL; 20 struct cmd_results *error = NULL;
38 if (config->reading) {
39 return cmd_results_new(CMD_FAILURE, "split",
40 "Can't be used in config file.");
41 }
42 if (!config->active) {
43 return cmd_results_new(CMD_FAILURE, "split",
44 "Can only be used when sway is running.");
45 }
46 if ((error = checkarg(argc, "split", EXPECTED_EQUAL_TO, 1))) { 21 if ((error = checkarg(argc, "split", EXPECTED_EQUAL_TO, 1))) {
47 return error; 22 return error;
48 } 23 }
49 if (strcasecmp(argv[0], "v") == 0 || strcasecmp(argv[0], "vertical") == 0) { 24 if (strcasecmp(argv[0], "v") == 0 || strcasecmp(argv[0], "vertical") == 0) {
50 _do_split(argc - 1, argv + 1, L_VERT); 25 do_split(L_VERT);
51 } else if (strcasecmp(argv[0], "h") == 0 || 26 } else if (strcasecmp(argv[0], "h") == 0 ||
52 strcasecmp(argv[0], "horizontal") == 0) { 27 strcasecmp(argv[0], "horizontal") == 0) {
53 _do_split(argc - 1, argv + 1, L_HORIZ); 28 do_split(L_HORIZ);
54 } else if (strcasecmp(argv[0], "t") == 0 || 29 } else if (strcasecmp(argv[0], "t") == 0 ||
55 strcasecmp(argv[0], "toggle") == 0) { 30 strcasecmp(argv[0], "toggle") == 0) {
56 struct sway_container *focused = 31 struct sway_container *focused =
57 config->handler_context.current_container; 32 config->handler_context.current_container;
58 33
59 if (focused->parent->layout == L_VERT) { 34 if (focused->parent->layout == L_VERT) {
60 _do_split(argc - 1, argv + 1, L_HORIZ); 35 do_split(L_HORIZ);
61 } else { 36 } else {
62 _do_split(argc - 1, argv + 1, L_VERT); 37 do_split(L_VERT);
63 } 38 }
64 } else { 39 } else {
65 error = cmd_results_new(CMD_FAILURE, "split", 40 error = cmd_results_new(CMD_FAILURE, "split",
@@ -70,18 +45,32 @@ struct cmd_results *cmd_split(int argc, char **argv) {
70} 45}
71 46
72struct cmd_results *cmd_splitv(int argc, char **argv) { 47struct cmd_results *cmd_splitv(int argc, char **argv) {
73 return _do_split(argc, argv, L_VERT); 48 struct cmd_results *error = NULL;
49 if ((error = checkarg(argc, "splitv", EXPECTED_EQUAL_TO, 0))) {
50 return error;
51 }
52 return do_split(L_VERT);
74} 53}
75 54
76struct cmd_results *cmd_splith(int argc, char **argv) { 55struct cmd_results *cmd_splith(int argc, char **argv) {
77 return _do_split(argc, argv, L_HORIZ); 56 struct cmd_results *error = NULL;
57 if ((error = checkarg(argc, "splitv", EXPECTED_EQUAL_TO, 0))) {
58 return error;
59 }
60 return do_split(L_HORIZ);
78} 61}
79 62
80struct cmd_results *cmd_splitt(int argc, char **argv) { 63struct cmd_results *cmd_splitt(int argc, char **argv) {
81 struct sway_container *focused = config->handler_context.current_container; 64 struct cmd_results *error = NULL;
82 if (focused->parent->layout == L_VERT) { 65 if ((error = checkarg(argc, "splitv", EXPECTED_EQUAL_TO, 0))) {
83 return _do_split(argc, argv, L_HORIZ); 66 return error;
67 }
68
69 struct sway_container *con = config->handler_context.current_container;
70
71 if (con->parent->layout == L_VERT) {
72 return do_split(L_HORIZ);
84 } else { 73 } else {
85 return _do_split(argc, argv, L_VERT); 74 return do_split(L_VERT);
86 } 75 }
87} 76}