From 2c2c5baa3e2e6d36b63bf5d2c4b91f86de43834d Mon Sep 17 00:00:00 2001 From: DreamMaoMao <2523610504@qq.com> Date: Sat, 8 Feb 2025 20:18:00 +0800 Subject: [PATCH] fix: error mark kill status --- main.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/main.c b/main.c index c88200f..38d9942 100644 --- a/main.c +++ b/main.c @@ -761,6 +761,7 @@ bool client_animation_next_tick(Client *c) { wlr_scene_node_set_enabled(&c->scene->node, false); client_set_suspended(c, true); c->animation.tagouted = true; + c->animation.current = c->geom; } return false; } else { @@ -1753,7 +1754,7 @@ void client_commit(Client *c) { wlr_output_schedule_frame(c->mon->wlr_output); } -void +void commitnotify(struct wl_listener *listener, void *data) { Client *c = wl_container_of(listener, c, commit); @@ -2883,7 +2884,7 @@ keypressmod(struct wl_listener *listener, void *data) { } void pending_kill_client(Client *c) { - c->iskilling = 1; + // c->iskilling = 1; //不可以提前标记已经杀掉,因为有些客户端可能拒绝 client_send_close(c); } @@ -3095,7 +3096,7 @@ minimizenotify(struct wl_listener *listener, void *data) { // wlr_xdg_surface_schedule_configure(c->surface.xdg); // togglefakefullscreen(&(Arg){0}); Client *c = wl_container_of(listener, c, minimize); - + if(!c || c->iskilling) return; @@ -3774,7 +3775,7 @@ void resize(Client *c, struct wlr_box geo, int interact) { } else if (c->is_open_animation) { set_open_animaiton(c, c->geom); } else { - c->animainit_geom = oldgeom; + c->animainit_geom = c->animation.current; } if (c->isnoborder || c->iskilling) { @@ -4834,6 +4835,8 @@ void unmapnotify(struct wl_listener *listener, void *data) { /* Called when the surface is unmapped, and should no longer be shown. */ Client *c = wl_container_of(listener, c, unmap); + c->iskilling = 1; + if (c == grabc) { cursor_mode = CurNormal; grabc = NULL; @@ -5390,7 +5393,7 @@ void activatex11(struct wl_listener *listener, void *data) { void // 0.7 configurex11(struct wl_listener *listener, void *data) { Client *c = wl_container_of(listener, c, configure); - + if(!c || c->iskilling) return; @@ -5521,4 +5524,4 @@ int main(int argc, char *argv[]) { usage: die("Usage: %s [-v] [-d] [-s startup command]", argv[0]); -} \ No newline at end of file +}