From d6cd79c342495738fc23fbfbf19a01e73cdc42dc Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 17 Aug 2018 19:48:34 +1000 Subject: 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. --- sway/criteria.c | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) (limited to 'sway/criteria.c') 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; } -- cgit v1.2.3-54-g00ecf