aboutsummaryrefslogtreecommitdiff
path: root/sway/criteria.c
diff options
context:
space:
mode:
authorRyan Dwyer <ryandwyer1@gmail.com>2018-08-17 19:48:34 +1000
committerRyan Dwyer <ryandwyer1@gmail.com>2018-08-18 23:38:54 +1000
commitd6cd79c342495738fc23fbfbf19a01e73cdc42dc (patch)
tree7a5ebeae1d5e15f047f09698978fa84f61756faa /sway/criteria.c
parentd4a32800d5eb938a769d7802b23f4a0f43cadaef (diff)
Implement iterators per container type
This introduces the following `for_each` functions: * root_for_each_workspace * root_for_each_container * output_for_each_workspace * output_for_each_container * workspace_for_each_container And introduces the following `find` functions: * root_find_output * root_find_workspace * root_find_container * output_find_workspace * output_find_container * workspace_find_container * container_find_child And removes the following functions: * container_descendants * container_for_each_descendant * container_find This change is preparing the way for demoting sway_container. Eventually these functions will accept and return sway_outputs, sway_workspaces and sway_containers (meaning a C_CONTAINER or C_VIEW). This change also makes it easy to handle abnormalities like the workspace floating list, root's scratchpad list and (once implemented) root's saved workspaces list for when there's no connected outputs.
Diffstat (limited to 'sway/criteria.c')
-rw-r--r--sway/criteria.c15
1 files changed, 2 insertions, 13 deletions
diff --git a/sway/criteria.c b/sway/criteria.c
index a5df1eef..81c2325a 100644
--- a/sway/criteria.c
+++ b/sway/criteria.c
@@ -167,8 +167,7 @@ static bool criteria_matches_view(struct criteria *criteria,
return false;
}
list_t *urgent_views = create_list();
- container_for_each_descendant(&root_container,
- find_urgent_iterator, urgent_views);
+ root_for_each_container(find_urgent_iterator, urgent_views);
list_stable_sort(urgent_views, cmp_urgent);
struct sway_view *target;
if (criteria->urgent == 'o') { // oldest
@@ -228,17 +227,7 @@ list_t *criteria_get_views(struct criteria *criteria) {
.criteria = criteria,
.matches = matches,
};
- container_for_each_descendant(&root_container,
- criteria_get_views_iterator, &data);
-
- // Scratchpad items which are hidden are not in the tree.
- for (int i = 0; i < root_container.sway_root->scratchpad->length; ++i) {
- struct sway_container *con =
- root_container.sway_root->scratchpad->items[i];
- if (!con->parent) {
- criteria_get_views_iterator(con, &data);
- }
- }
+ root_for_each_container(criteria_get_views_iterator, &data);
return matches;
}