criteria cleanup

This commit is contained in:
Tony Crisci 2018-01-21 14:11:41 -05:00
parent 6b03b1205d
commit 5505d84ac2
3 changed files with 12 additions and 7 deletions

View File

@ -34,7 +34,7 @@ char *extract_crit_tokens(list_t *tokens, const char *criteria);
list_t *criteria_for(swayc_t *cont);
// Returns a list of all containers that match the given list of tokens.
list_t *container_for(list_t *tokens);
list_t *container_for_crit_tokens(list_t *tokens);
// Returns true if any criteria in the given list matches this container
bool criteria_any(swayc_t *cont, list_t *criteria);

View File

@ -226,7 +226,7 @@ struct cmd_results *handle_command(char *_exec) {
free(tokens);
goto cleanup;
}
containers = container_for(tokens);
containers = container_for_crit_tokens(tokens);
free(tokens);
} else {

View File

@ -103,7 +103,8 @@ static int countchr(char *str, char c) {
// of buf.
//
// Returns error string or NULL if successful.
static char *crit_tokens(int *argc, char ***buf, const char * const criteria_str) {
static char *crit_tokens(int *argc, char ***buf,
const char * const criteria_str) {
wlr_log(L_DEBUG, "Parsing criteria: '%s'", criteria_str);
char *base = criteria_from(criteria_str);
char *head = base;
@ -423,16 +424,20 @@ struct list_tokens {
list_t *tokens;
};
static void container_match_add(swayc_t *container, struct list_tokens *list_tokens) {
static void container_match_add(swayc_t *container,
struct list_tokens *list_tokens) {
if (criteria_test(container, list_tokens->tokens)) {
list_add(list_tokens->list, container);
}
}
list_t *container_for(list_t *tokens) {
struct list_tokens list_tokens = (struct list_tokens){create_list(), tokens};
list_t *container_for_crit_tokens(list_t *tokens) {
struct list_tokens list_tokens =
(struct list_tokens){create_list(), tokens};
container_map(&root_container, (void (*)(swayc_t *, void *))container_match_add, &list_tokens);
container_map(&root_container,
(void (*)(swayc_t *, void *))container_match_add,
&list_tokens);
// TODO look in the scratchpad