fix: fix border color change when swithc mon focus
This commit is contained in:
@@ -1060,7 +1060,7 @@ void client_set_focused_opacity_animation(Client *c) {
|
||||
c->opacity_animation.running = true;
|
||||
}
|
||||
|
||||
void cleint_set_unfocused_opacity_animation(Client *c) {
|
||||
void client_set_unfocused_opacity_animation(Client *c) {
|
||||
// Start border color animation to unfocused
|
||||
float *border_color = get_border_color(c);
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@ int focusmon(const Arg *arg) {
|
||||
focusclient(c, 1);
|
||||
|
||||
if (old_selmon_sel) {
|
||||
setborder_color(old_selmon_sel);
|
||||
client_set_unfocused_opacity_animation(old_selmon_sel);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -374,7 +374,10 @@ Client *get_next_stack_client(Client *c, bool reverse) {
|
||||
}
|
||||
|
||||
float *get_border_color(Client *c) {
|
||||
if (c->isurgent) {
|
||||
|
||||
if (c->mon != selmon) {
|
||||
return bordercolor;
|
||||
} else if (c->isurgent) {
|
||||
return urgentcolor;
|
||||
} else if (c->is_in_scratchpad && selmon && c == selmon->sel) {
|
||||
return scratchpadcolor;
|
||||
|
||||
@@ -3092,6 +3092,9 @@ void destroykeyboardgroup(struct wl_listener *listener, void *data) {
|
||||
}
|
||||
|
||||
void focusclient(Client *c, int lift) {
|
||||
|
||||
Client *last_focus_client = NULL;
|
||||
|
||||
struct wlr_surface *old_keyboard_focus_surface =
|
||||
seat->keyboard_state.focused_surface;
|
||||
|
||||
@@ -3126,12 +3129,14 @@ void focusclient(Client *c, int lift) {
|
||||
|
||||
if (c && !c->iskilling && !client_is_unmanaged(c) && c->mon) {
|
||||
|
||||
last_focus_client = selmon->sel;
|
||||
selmon = c->mon;
|
||||
selmon->prevsel = selmon->sel;
|
||||
selmon->sel = c;
|
||||
|
||||
if (selmon->prevsel && !selmon->prevsel->iskilling) {
|
||||
cleint_set_unfocused_opacity_animation(selmon->prevsel);
|
||||
if (last_focus_client && !last_focus_client->iskilling &&
|
||||
last_focus_client != c) {
|
||||
client_set_unfocused_opacity_animation(last_focus_client);
|
||||
}
|
||||
|
||||
client_set_focused_opacity_animation(c);
|
||||
|
||||
Reference in New Issue
Block a user