diff options
author | wil <william.barsse@gmail.com> | 2016-12-21 16:55:02 +0100 |
---|---|---|
committer | wil <william.barsse@gmail.com> | 2016-12-29 20:31:30 +0100 |
commit | 8b0073b1954b54792f74b9e024c51548143906ea (patch) | |
tree | b1e5efa485edab388adebb7d62f727e2f07489ca /sway/commands/layout.c | |
parent | Handle resize in auto layouts (diff) | |
download | sway-8b0073b1954b54792f74b9e024c51548143906ea.tar.gz sway-8b0073b1954b54792f74b9e024c51548143906ea.tar.zst sway-8b0073b1954b54792f74b9e024c51548143906ea.zip |
Added "layout incnmaster|incncol" commands
Diffstat (limited to 'sway/commands/layout.c')
-rw-r--r-- | sway/commands/layout.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/sway/commands/layout.c b/sway/commands/layout.c index e6fa7ef1..5e2e8efd 100644 --- a/sway/commands/layout.c +++ b/sway/commands/layout.c | |||
@@ -74,6 +74,36 @@ struct cmd_results *cmd_layout(int argc, char **argv) { | |||
74 | parent = new_container(parent, L_AUTO_BOTTOM); | 74 | parent = new_container(parent, L_AUTO_BOTTOM); |
75 | } | 75 | } |
76 | swayc_change_layout(parent, L_AUTO_BOTTOM); | 76 | swayc_change_layout(parent, L_AUTO_BOTTOM); |
77 | } else if (strcasecmp(argv[0], "incnmaster") == 0) { | ||
78 | if ((error = checkarg(argc, "layout incnmaster", | ||
79 | EXPECTED_EQUAL_TO, 2))) { | ||
80 | return error; | ||
81 | } | ||
82 | int inc = (int) strtol(argv[1], NULL, 10); | ||
83 | swayc_t *container = get_focused_view(swayc_active_workspace()); | ||
84 | if (container && inc && | ||
85 | is_auto_layout(container->parent->layout) && | ||
86 | ((int)container->parent->nb_master + inc >= 0)) { | ||
87 | for (int i = container->parent->nb_master; | ||
88 | i >= 0 && i < container->parent->children->length && | ||
89 | i != (int) container->parent->nb_master + inc;) { | ||
90 | ((swayc_t *) container->parent->children->items[i])->height = -1; | ||
91 | ((swayc_t *) container->parent->children->items[i])->width = -1; | ||
92 | i += inc > 0 ? 1 : -1; | ||
93 | } | ||
94 | container->parent->nb_master += inc; | ||
95 | } | ||
96 | } else if ((strcasecmp(argv[0], "incncol") == 0) && argc ==2) { | ||
97 | if ((error = checkarg(argc, "layout incncol", | ||
98 | EXPECTED_EQUAL_TO, 2))) { | ||
99 | return error; | ||
100 | } | ||
101 | int inc = (int) strtol(argv[1], NULL, 10); | ||
102 | swayc_t *container = get_focused_view(swayc_active_workspace()); | ||
103 | if (container && inc && is_auto_layout(container->parent->layout) && | ||
104 | ((int)container->parent->nb_slave_groups + inc >= 1)) { | ||
105 | container->parent->nb_slave_groups += inc; | ||
106 | } | ||
77 | } | 107 | } |
78 | } | 108 | } |
79 | 109 | ||