diff --git a/src/dispatch/bind_define.h b/src/dispatch/bind_define.h index 004147f..c167915 100644 --- a/src/dispatch/bind_define.h +++ b/src/dispatch/bind_define.h @@ -201,6 +201,7 @@ int focusmon(const Arg *arg) { selmon->sel = NULL; wlr_seat_pointer_notify_clear_focus(seat); wlr_seat_keyboard_notify_clear_focus(seat); + focusclient(NULL, 0); } else focusclient(c, 1); diff --git a/src/mango.c b/src/mango.c index 0e52883..8811c84 100644 --- a/src/mango.c +++ b/src/mango.c @@ -3215,14 +3215,6 @@ void focusclient(Client *c, int lift) { client_set_unfocused_opacity_animation(last_focus_client); } - wl_list_for_each(um, &mons, link) { - if (um->wlr_output->enabled && um != selmon && um->sel && - !um->sel->iskilling && um->sel->isfocusing) { - um->sel->isfocusing = false; - client_set_unfocused_opacity_animation(um->sel); - } - } - client_set_focused_opacity_animation(c); // decide whether need to re-arrange @@ -3242,6 +3234,15 @@ void focusclient(Client *c, int lift) { c->isurgent = 0; } + // update other monitor focus disappear + wl_list_for_each(um, &mons, link) { + if (um->wlr_output->enabled && um != selmon && um->sel && + !um->sel->iskilling && um->sel->isfocusing) { + um->sel->isfocusing = false; + client_set_unfocused_opacity_animation(um->sel); + } + } + if (c && !c->iskilling && c->foreign_toplevel) wlr_foreign_toplevel_handle_v1_set_activated(c->foreign_toplevel, true);