diff options
author | Ronan Pigott <rpigott@berkeley.edu> | 2020-07-25 12:53:52 -0700 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2021-09-03 23:50:20 +0200 |
commit | de3c290427be134c1d1e900752d5cb6d3daf2777 (patch) | |
tree | 460e55b34e16ea49f326d7149ab586c1f3fde99d /sway/commands/split.c | |
parent | seatop_down: End if surface is destroyed or other seatop starts (diff) | |
download | sway-de3c290427be134c1d1e900752d5cb6d3daf2777.tar.gz sway-de3c290427be134c1d1e900752d5cb6d3daf2777.tar.zst sway-de3c290427be134c1d1e900752d5cb6d3daf2777.zip |
command: implement split none
Diffstat (limited to 'sway/commands/split.c')
-rw-r--r-- | sway/commands/split.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sway/commands/split.c b/sway/commands/split.c index 3e25c6f7..4c275883 100644 --- a/sway/commands/split.c +++ b/sway/commands/split.c | |||
@@ -32,6 +32,24 @@ static struct cmd_results *do_split(int layout) { | |||
32 | return cmd_results_new(CMD_SUCCESS, NULL); | 32 | return cmd_results_new(CMD_SUCCESS, NULL); |
33 | } | 33 | } |
34 | 34 | ||
35 | static struct cmd_results *do_unsplit() { | ||
36 | struct sway_container *con = config->handler_context.container; | ||
37 | struct sway_workspace *ws = config->handler_context.workspace; | ||
38 | |||
39 | if (con && con->parent && con->parent->children->length == 1) { | ||
40 | container_flatten(con->parent); | ||
41 | } else { | ||
42 | return cmd_results_new(CMD_FAILURE, "Can only flatten a child container with no siblings"); | ||
43 | } | ||
44 | |||
45 | if (root->fullscreen_global) { | ||
46 | arrange_root(); | ||
47 | } else { | ||
48 | arrange_workspace(ws); | ||
49 | } | ||
50 | return cmd_results_new(CMD_SUCCESS, NULL); | ||
51 | } | ||
52 | |||
35 | struct cmd_results *cmd_split(int argc, char **argv) { | 53 | struct cmd_results *cmd_split(int argc, char **argv) { |
36 | struct cmd_results *error = NULL; | 54 | struct cmd_results *error = NULL; |
37 | if ((error = checkarg(argc, "split", EXPECTED_EQUAL_TO, 1))) { | 55 | if ((error = checkarg(argc, "split", EXPECTED_EQUAL_TO, 1))) { |
@@ -55,6 +73,9 @@ struct cmd_results *cmd_split(int argc, char **argv) { | |||
55 | } else { | 73 | } else { |
56 | return do_split(L_VERT); | 74 | return do_split(L_VERT); |
57 | } | 75 | } |
76 | } else if (strcasecmp(argv[0], "n") == 0 || | ||
77 | strcasecmp(argv[0], "none") == 0) { | ||
78 | return do_unsplit(); | ||
58 | } else { | 79 | } else { |
59 | return cmd_results_new(CMD_FAILURE, | 80 | return cmd_results_new(CMD_FAILURE, |
60 | "Invalid split command (expected either horizontal or vertical)."); | 81 | "Invalid split command (expected either horizontal or vertical)."); |