diff options
author | Luminarys <kizunanohikari@gmail.com> | 2015-08-16 11:54:37 -0500 |
---|---|---|
committer | Luminarys <kizunanohikari@gmail.com> | 2015-08-16 11:54:37 -0500 |
commit | dfaf3a059f3ecb97806f33c9674d7895011d623d (patch) | |
tree | 0f28748577726d502212600d8cc743cafaa4cc6f | |
parent | Added in kill command (diff) | |
download | sway-dfaf3a059f3ecb97806f33c9674d7895011d623d.tar.gz sway-dfaf3a059f3ecb97806f33c9674d7895011d623d.tar.zst sway-dfaf3a059f3ecb97806f33c9674d7895011d623d.zip |
Added in better exit handling
-rw-r--r-- | sway/commands.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/sway/commands.c b/sway/commands.c index 02fdcf6c..5cb661eb 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include "log.h" | 12 | #include "log.h" |
13 | #include "workspace.h" | 13 | #include "workspace.h" |
14 | #include "commands.h" | 14 | #include "commands.h" |
15 | #include "container.h" | ||
15 | 16 | ||
16 | struct modifier_key { | 17 | struct modifier_key { |
17 | char *name; | 18 | char *name; |
@@ -152,11 +153,18 @@ static bool cmd_exec(struct sway_config *config, int argc, char **argv) { | |||
152 | return cmd_exec_always(config, argc, argv); | 153 | return cmd_exec_always(config, argc, argv); |
153 | } | 154 | } |
154 | 155 | ||
156 | static void kill_views(swayc_t *container, void *data) { | ||
157 | if (container->type == C_VIEW) { | ||
158 | wlc_view_close(container->handle); | ||
159 | } | ||
160 | } | ||
161 | |||
155 | static bool cmd_exit(struct sway_config *config, int argc, char **argv) { | 162 | static bool cmd_exit(struct sway_config *config, int argc, char **argv) { |
156 | if (!checkarg(argc, "exit", EXPECTED_EQUAL_TO, 0)) { | 163 | if (!checkarg(argc, "exit", EXPECTED_EQUAL_TO, 0)) { |
157 | return false; | 164 | return false; |
158 | } | 165 | } |
159 | // TODO: Some kind of clean up is probably in order | 166 | // Close all views |
167 | container_map(&root_container, kill_views, NULL); | ||
160 | exit(0); | 168 | exit(0); |
161 | return true; | 169 | return true; |
162 | } | 170 | } |
@@ -190,8 +198,8 @@ static bool cmd_focus_follows_mouse(struct sway_config *config, int argc, char * | |||
190 | 198 | ||
191 | static bool cmd_kill(struct sway_config *config, int argc, char **argv) { | 199 | static bool cmd_kill(struct sway_config *config, int argc, char **argv) { |
192 | swayc_t *view = get_focused_container(&root_container); | 200 | swayc_t *view = get_focused_container(&root_container); |
193 | wlc_view_close(view->handle); | 201 | wlc_view_close(view->handle); |
194 | return true; | 202 | return true; |
195 | } | 203 | } |
196 | 204 | ||
197 | static bool cmd_layout(struct sway_config *config, int argc, char **argv) { | 205 | static bool cmd_layout(struct sway_config *config, int argc, char **argv) { |