client: don't change border color during drags

Fixes: https://github.com/djpohly/dwl/issues/318
This commit is contained in:
Leonardo Hernández Hernández 2022-10-31 23:33:23 -06:00
parent 846ce52b92
commit 3cc22de712
Failed to generate hash of commit

8
dwl.c
View file

@ -1185,8 +1185,9 @@ focusclient(Client *c, int lift)
c->isurgent = 0; c->isurgent = 0;
client_restack_surface(c); client_restack_surface(c);
/* Don't change border color if there is an exclusive focus */ /* Don't change border color if there is an exclusive focus or we are
if (!exclusive_focus) * handling a drag operation */
if (!exclusive_focus && !seat->drag)
for (i = 0; i < 4; i++) for (i = 0; i < 4; i++)
wlr_scene_rect_set_color(c->border[i], focuscolor); wlr_scene_rect_set_color(c->border[i], focuscolor);
} }
@ -2261,6 +2262,9 @@ void
startdrag(struct wl_listener *listener, void *data) startdrag(struct wl_listener *listener, void *data)
{ {
struct wlr_drag *drag = data; struct wlr_drag *drag = data;
/* During drag the focus isn't sent to clients, this causes that
* we don't update border color acording the pointer coordinates */
focusclient(NULL, 0);
if (!drag->icon) if (!drag->icon)
return; return;