diff --git a/sway/criteria.c b/sway/criteria.c index 51779590..53435d29 100644 --- a/sway/criteria.c +++ b/sway/criteria.c @@ -247,62 +247,62 @@ static bool criteria_test(swayc_t *cont, list_t *tokens) { for (int i = 0; i < tokens->length; i++) { struct crit_token *crit = tokens->items[i]; switch (crit->type) { - case CRIT_CLASS: - if (!cont->class) { - // ignore - } else if (strcmp(crit->raw, "focused") == 0) { - swayc_t *focused = get_focused_view(&root_container); - if (focused->class && strcmp(cont->class, focused->class) == 0) { - matches++; - } - } else if (crit->regex && regexec(crit->regex, cont->class, 0, NULL, 0) == 0) { + case CRIT_CLASS: + if (!cont->class) { + // ignore + } else if (strcmp(crit->raw, "focused") == 0) { + swayc_t *focused = get_focused_view(&root_container); + if (focused->class && strcmp(cont->class, focused->class) == 0) { matches++; } - break; - case CRIT_ID: - if (!cont->app_id) { - // ignore - } else if (crit->regex && regexec(crit->regex, cont->app_id, 0, NULL, 0) == 0) { - matches++; - } - break; - case CRIT_INSTANCE: - break; - case CRIT_TITLE: - if (!cont->name) { - // ignore - } else if (strcmp(crit->raw, "focused") == 0) { - swayc_t *focused = get_focused_view(&root_container); - if (focused->name && strcmp(cont->name, focused->name) == 0) { - matches++; - } - } else if (crit->regex && regexec(crit->regex, cont->name, 0, NULL, 0) == 0) { + } else if (crit->regex && regexec(crit->regex, cont->class, 0, NULL, 0) == 0) { + matches++; + } + break; + case CRIT_ID: + if (!cont->app_id) { + // ignore + } else if (crit->regex && regexec(crit->regex, cont->app_id, 0, NULL, 0) == 0) { + matches++; + } + break; + case CRIT_INSTANCE: + break; + case CRIT_TITLE: + if (!cont->name) { + // ignore + } else if (strcmp(crit->raw, "focused") == 0) { + swayc_t *focused = get_focused_view(&root_container); + if (focused->name && strcmp(cont->name, focused->name) == 0) { matches++; } - break; - case CRIT_URGENT: // "latest" or "oldest" - break; - case CRIT_WINDOW_ROLE: - break; - case CRIT_WINDOW_TYPE: - // TODO wlc indeed exposes this information - break; - case CRIT_WORKSPACE: ; - swayc_t *cont_ws = swayc_parent_by_type(cont, C_WORKSPACE); - if (!cont_ws || !cont_ws->name) { - // ignore - } else if (strcmp(crit->raw, "focused") == 0) { - swayc_t *focused_ws = swayc_active_workspace(); - if (focused_ws->name && strcmp(cont_ws->name, focused_ws->name) == 0) { - matches++; - } - } else if (crit->regex && regexec(crit->regex, cont_ws->name, 0, NULL, 0) == 0) { + } else if (crit->regex && regexec(crit->regex, cont->name, 0, NULL, 0) == 0) { + matches++; + } + break; + case CRIT_URGENT: // "latest" or "oldest" + break; + case CRIT_WINDOW_ROLE: + break; + case CRIT_WINDOW_TYPE: + // TODO wlc indeed exposes this information + break; + case CRIT_WORKSPACE: ; + swayc_t *cont_ws = swayc_parent_by_type(cont, C_WORKSPACE); + if (!cont_ws || !cont_ws->name) { + // ignore + } else if (strcmp(crit->raw, "focused") == 0) { + swayc_t *focused_ws = swayc_active_workspace(); + if (focused_ws->name && strcmp(cont_ws->name, focused_ws->name) == 0) { matches++; } - break; - default: - sway_abort("Invalid criteria type (%i)", crit->type); - break; + } else if (crit->regex && regexec(crit->regex, cont_ws->name, 0, NULL, 0) == 0) { + matches++; + } + break; + default: + sway_abort("Invalid criteria type (%i)", crit->type); + break; } } return matches == tokens->length;