void match_init(Match *match) {
memset(match, 0, sizeof(Match));
match->urgent = U_DONTCHECK;
+ match->window_mode = WM_ANY;
/* we use this as the placeholder value for "not set". */
match->window_type = UINT32_MAX;
}
match->window_type == UINT32_MAX &&
match->con_id == NULL &&
match->dock == M_NODOCK &&
- match->floating == M_ANY);
+ match->window_mode == WM_ANY);
}
/*
}
}
+ if (match->window_mode != WM_ANY) {
+ if ((con = con_by_window_id(window->id)) == NULL)
+ return false;
+
+ const bool floating = (con_inside_floating(con) != NULL);
+
+ if ((match->window_mode == WM_TILING && floating) ||
+ (match->window_mode == WM_FLOATING && !floating)) {
+ LOG("window_mode does not match\n");
+ return false;
+ }
+
+ LOG("window_mode matches\n");
+ }
+
return true;
}
return;
}
+ if (strcmp(ctype, "tiling") == 0) {
+ match->window_mode = WM_TILING;
+ return;
+ }
+
+ if (strcmp(ctype, "floating") == 0) {
+ match->window_mode = WM_FLOATING;
+ return;
+ }
+
ELOG("Unknown criterion: %s\n", ctype);
}