opt: optimize slide animaiton dir judge

This commit is contained in:
DreamMaoMao 2025-09-09 12:14:36 +08:00
parent d64e654c2d
commit d32dde4d98

View file

@ -28,23 +28,36 @@ enum corner_location set_client_corner_location(Client *c) {
return current_corner_location;
}
int is_special_animaiton_rule(Client *c) {
int visible_client_number = 0;
Client *count_c;
wl_list_for_each(count_c, &clients, link) {
if (count_c && VISIBLEON(count_c, selmon) && !count_c->isminied &&
!count_c->iskilling && !count_c->isfloating) {
visible_client_number++;
}
}
bool is_horizontal_stack_layout(Monitor *m) {
if (is_scroller_layout(selmon) && !c->isfloating) {
if (!m->pertag->curtag &&
(strcmp(m->pertag->ltidxs[m->pertag->prevtag]->name, "tile") == 0 ||
strcmp(m->pertag->ltidxs[m->pertag->prevtag]->name, "spiral") == 0 ||
strcmp(m->pertag->ltidxs[m->pertag->prevtag]->name, "dwindle") == 0 ||
strcmp(m->pertag->ltidxs[m->pertag->prevtag]->name, "deck") == 0))
return true;
if (m->pertag->curtag &&
(strcmp(m->pertag->ltidxs[m->pertag->curtag]->name, "tile") == 0 ||
strcmp(m->pertag->ltidxs[m->pertag->curtag]->name, "spiral") == 0 ||
strcmp(m->pertag->ltidxs[m->pertag->curtag]->name, "dwindle") == 0 ||
strcmp(m->pertag->ltidxs[m->pertag->curtag]->name, "deck") == 0))
return true;
return false;
}
int is_special_animaiton_rule(Client *c) {
if (is_scroller_layout(c->mon) && !c->isfloating) {
return DOWN;
} else if (visible_client_number < 2 && !c->isfloating) {
} else if (c->mon->visible_tiling_clients == 1 && !c->isfloating) {
return DOWN;
} else if (visible_client_number == 2 && !c->isfloating && !new_is_master) {
} else if (c->mon->visible_tiling_clients == 2 && !c->isfloating &&
!new_is_master && is_horizontal_stack_layout(c->mon)) {
return RIGHT;
} else if (!c->isfloating && new_is_master) {
} else if (!c->isfloating && new_is_master &&
is_horizontal_stack_layout(c->mon)) {
return LEFT;
} else {
return UNDIR;