diff --git a/src/animation/layer.h b/src/animation/layer.h index 138dc1b..b557e3d 100644 --- a/src/animation/layer.h +++ b/src/animation/layer.h @@ -465,7 +465,7 @@ void layer_set_pending_state(LayerSurface *l) { l->pending = l->geom; - if (l->animation.action == OPEN) { + if (l->animation.action == OPEN && !l->animation.running) { if ((!l->animation_type_open && strcmp(layer_animation_type_open, "zoom") == 0) || @@ -510,8 +510,6 @@ void layer_set_pending_state(LayerSurface *l) { l->animation.should_animate = false; } - l->animation.duration = animation_duration_open; - l->animation.action = OPEN; // 开始动画 layer_commit(l); l->dirty = true; diff --git a/src/maomao.c b/src/maomao.c index 5b6e0f1..29fd717 100644 --- a/src/maomao.c +++ b/src/maomao.c @@ -2556,6 +2556,7 @@ void maplayersurfacenotify(struct wl_listener *listener, void *data) { // 初始化动画 if (animations && layer_animations && !l->noanim) { + l->animation.duration = animation_duration_open; l->animation.action = OPEN; layer_set_pending_state(l); } @@ -2605,6 +2606,7 @@ void commitlayersurfacenotify(struct wl_listener *listener, void *data) { l->geom.width = box.width; l->geom.height = box.height; l->animation.action = MOVE; + l->animation.duration = animation_duration_move; l->need_output_flush = true; layer_set_pending_state(l); }