diff options
author | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-08-20 15:54:30 +1000 |
---|---|---|
committer | Ryan Dwyer <ryandwyer1@gmail.com> | 2018-08-24 22:17:28 +1000 |
commit | b6058703fa240780d66fac8ef96982c66b2b0263 (patch) | |
tree | 5e056a7859751c68c0cfb425fc6f37599c3f7400 /include/sway/tree/container.h | |
parent | Merge pull request #2470 from ianyfan/completions (diff) | |
download | sway-b6058703fa240780d66fac8ef96982c66b2b0263.tar.gz sway-b6058703fa240780d66fac8ef96982c66b2b0263.tar.zst sway-b6058703fa240780d66fac8ef96982c66b2b0263.zip |
Refactor destroy functions and save workspaces when there's no outputs
This changes the destroy functions to the following:
* output_begin_destroy
* output_destroy
* workspace_begin_destroy
* workspace_destroy
* container_begin_destroy
* container_destroy
* view_begin_destroy
* view_destroy
The terminology was `destroy` and `free`, and it has been changed to
`begin_destroy` and `destroy` respectively.
When the last output is disconnected, its workspaces will now be stashed
in the root. Upon connection of a new output they will be restored.
There is a new function `workspace_consider_destroy` which decides
whether the given workspace should be destroyed or not (ie. empty and
not visible).
Calling container_begin_destroy will no longer automatically reap the
parents. In some places we want to reap the parents and in some we
don't, so this is left to the caller.
container_reap_empty_recursive and container_reap_empty have been
combined into one function and it will recurse up the tree.
Diffstat (limited to 'include/sway/tree/container.h')
-rw-r--r-- | include/sway/tree/container.h | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/include/sway/tree/container.h b/include/sway/tree/container.h index cd886cd0..2cb23d3c 100644 --- a/include/sway/tree/container.h +++ b/include/sway/tree/container.h | |||
@@ -176,27 +176,6 @@ struct sway_container *container_create(enum sway_container_type type); | |||
176 | 176 | ||
177 | const char *container_type_to_str(enum sway_container_type type); | 177 | const char *container_type_to_str(enum sway_container_type type); |
178 | 178 | ||
179 | struct sway_container *output_create(struct sway_output *sway_output); | ||
180 | |||
181 | /** | ||
182 | * Create a new container container. A container container can be a a child of | ||
183 | * a workspace container or another container container. | ||
184 | */ | ||
185 | struct sway_container *container_container_create(); | ||
186 | |||
187 | /** | ||
188 | * Create a new output. Outputs are children of the root container and have no | ||
189 | * order in the tree structure. | ||
190 | */ | ||
191 | struct sway_container *output_create(struct sway_output *sway_output); | ||
192 | |||
193 | /** | ||
194 | * Create a new workspace container. Workspaces are children of an output | ||
195 | * container and are ordered alphabetically by name. | ||
196 | */ | ||
197 | struct sway_container *workspace_create(struct sway_container *output, | ||
198 | const char *name); | ||
199 | |||
200 | /* | 179 | /* |
201 | * Create a new view container. A view can be a child of a workspace container | 180 | * Create a new view container. A view can be a child of a workspace container |
202 | * or a container container and are rendered in the order and structure of | 181 | * or a container container and are rendered in the order and structure of |
@@ -205,9 +184,9 @@ struct sway_container *workspace_create(struct sway_container *output, | |||
205 | struct sway_container *container_view_create( | 184 | struct sway_container *container_view_create( |
206 | struct sway_container *sibling, struct sway_view *sway_view); | 185 | struct sway_container *sibling, struct sway_view *sway_view); |
207 | 186 | ||
208 | void container_free(struct sway_container *cont); | 187 | void container_destroy(struct sway_container *con); |
209 | 188 | ||
210 | struct sway_container *container_destroy(struct sway_container *container); | 189 | void container_begin_destroy(struct sway_container *con); |
211 | 190 | ||
212 | struct sway_container *container_close(struct sway_container *container); | 191 | struct sway_container *container_close(struct sway_container *container); |
213 | 192 | ||
@@ -255,10 +234,7 @@ void container_update_textures_recursive(struct sway_container *con); | |||
255 | 234 | ||
256 | void container_damage_whole(struct sway_container *container); | 235 | void container_damage_whole(struct sway_container *container); |
257 | 236 | ||
258 | bool container_reap_empty(struct sway_container *con); | 237 | struct sway_container *container_reap_empty(struct sway_container *con); |
259 | |||
260 | struct sway_container *container_reap_empty_recursive( | ||
261 | struct sway_container *con); | ||
262 | 238 | ||
263 | struct sway_container *container_flatten(struct sway_container *container); | 239 | struct sway_container *container_flatten(struct sway_container *container); |
264 | 240 | ||