fix: The conflict of animation types leads to unstable animation spee

This commit is contained in:
DreamMaoMao 2025-04-29 12:55:16 +08:00
parent c72888d391
commit 3b3f60e954

View file

@ -998,6 +998,11 @@ void client_animation_next_tick(Client *c) {
c->animation.begin_fade_in = false; c->animation.begin_fade_in = false;
} }
// clear the open action state
// To prevent him from being mistaken that
// it's still in the opening animation in resize
c->animation.action = MOVE;
c->animation.tagining = false; c->animation.tagining = false;
c->animation.running = false; c->animation.running = false;
@ -1695,17 +1700,25 @@ arrange(Monitor *m, bool want_animation) {
} }
client_set_suspended(c, false); client_set_suspended(c, false);
if (!c->animation.from_rule && want_animation && if (!c->animation.from_rule && want_animation &&
m->pertag->prevtag != 0 && m->pertag->curtag != 0 && animations && m->pertag->prevtag != 0 && m->pertag->curtag != 0 && animations) {
!c->animation.running) {
c->animation.tagining = true; c->animation.tagining = true;
if (m->pertag->curtag > m->pertag->prevtag) { if (m->pertag->curtag > m->pertag->prevtag) {
if(c->animation.running) {
c->animainit_geom.x = c->animation.current.x;
c->animainit_geom.y = c->animation.current.y;
} else {
c->animainit_geom.x = tag_animation_direction == VERTICAL c->animainit_geom.x = tag_animation_direction == VERTICAL
? c->animation.current.x ? c->animation.current.x
: c->mon->m.x + c->mon->m.width; : c->mon->m.x + c->mon->m.width;
c->animainit_geom.y = tag_animation_direction == VERTICAL c->animainit_geom.y = tag_animation_direction == VERTICAL
? c->mon->m.y + c->mon->m.height ? c->mon->m.y + c->mon->m.height
: c->animation.current.y; : c->animation.current.y;
}
} else {
if(c->animation.running) {
c->animainit_geom.x = c->animation.current.x;
c->animainit_geom.y = c->animation.current.y;
} else { } else {
c->animainit_geom.x = tag_animation_direction == VERTICAL c->animainit_geom.x = tag_animation_direction == VERTICAL
? c->animation.current.x ? c->animation.current.x
@ -1714,6 +1727,7 @@ arrange(Monitor *m, bool want_animation) {
? m->m.y - c->geom.height ? m->m.y - c->geom.height
: c->animation.current.y; : c->animation.current.y;
} }
}
} else { } else {
c->animainit_geom.x = c->animation.current.x; c->animainit_geom.x = c->animation.current.x;
c->animainit_geom.y = c->animation.current.y; c->animainit_geom.y = c->animation.current.y;