opt: make tag animation more consistent

This commit is contained in:
DreamMaoMao 2025-10-20 17:58:01 +08:00
parent c288aef7c1
commit 5429b723f6

View file

@ -9,19 +9,23 @@ void set_tagin_animation(Monitor *m, Client *c) {
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; : MAX(c->mon->m.x + c->mon->m.width,
c->geom.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 ? MAX(c->mon->m.y + c->mon->m.height,
c->geom.y + c->mon->m.height)
: c->animation.current.y; : c->animation.current.y;
} else { } else {
c->animainit_geom.x = tag_animation_direction == VERTICAL c->animainit_geom.x =
? c->animation.current.x tag_animation_direction == VERTICAL
: m->m.x - c->geom.width; ? c->animation.current.x
c->animainit_geom.y = tag_animation_direction == VERTICAL : MIN(m->m.x - c->geom.width, c->geom.x - c->mon->m.width);
? m->m.y - c->geom.height c->animainit_geom.y =
: c->animation.current.y; tag_animation_direction == VERTICAL
? MIN(m->m.y - c->geom.height, c->geom.y - c->mon->m.height)
: c->animation.current.y;
} }
} }
@ -52,11 +56,13 @@ void set_arrange_visible(Monitor *m, Client *c, bool want_animation) {
void set_tagout_animation(Monitor *m, Client *c) { void set_tagout_animation(Monitor *m, Client *c) {
if (m->pertag->curtag > m->pertag->prevtag) { if (m->pertag->curtag > m->pertag->prevtag) {
c->pending = c->geom; c->pending = c->geom;
c->pending.x = tag_animation_direction == VERTICAL c->pending.x =
? c->animation.current.x tag_animation_direction == VERTICAL
: c->mon->m.x - c->geom.width; ? c->animation.current.x
: MIN(c->mon->m.x - c->geom.width, c->geom.x - c->mon->m.width);
c->pending.y = tag_animation_direction == VERTICAL c->pending.y = tag_animation_direction == VERTICAL
? c->mon->m.y - c->geom.height ? MIN(c->mon->m.y - c->geom.height,
c->geom.y - c->mon->m.height)
: c->animation.current.y; : c->animation.current.y;
resize(c, c->geom, 0); resize(c, c->geom, 0);
@ -64,9 +70,11 @@ void set_tagout_animation(Monitor *m, Client *c) {
c->pending = c->geom; c->pending = c->geom;
c->pending.x = tag_animation_direction == VERTICAL c->pending.x = tag_animation_direction == VERTICAL
? c->animation.current.x ? c->animation.current.x
: c->mon->m.x + c->mon->m.width; : MAX(c->mon->m.x + c->mon->m.width,
c->geom.x + c->mon->m.width);
c->pending.y = tag_animation_direction == VERTICAL c->pending.y = tag_animation_direction == VERTICAL
? c->mon->m.y + c->mon->m.height ? MAX(c->mon->m.y + c->mon->m.height,
c->geom.y + c->mon->m.height)
: c->animation.current.y; : c->animation.current.y;
resize(c, c->geom, 0); resize(c, c->geom, 0);
} }