dwl

My patch set and modifications to dwl
git clone git://git.ethandl.dev/dwl
Log | Files | Refs | README | LICENSE

commit 39946e07f2b2ac09cfa622668585f2223fc277d4
parent f80f08848b8b7e08ed2f20c7f0a8675a3b4df394
Author: Guido Cella <guido@guidocella.xyz>
Date:   Sun, 20 Dec 2020 15:34:36 +0100

fix keyboard focus with overlays

Don't let internal calls to motionnotify(0) meant to update the pointer
focus from maplayersurfacenotify and destroylayersurfacenotify also
shift the keyboard focus to the surface under the cursor with
sloppyfocus.

Diffstat:
Mdwl.c | 15++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/dwl.c b/dwl.c @@ -1412,12 +1412,6 @@ motionabsolute(struct wl_listener *listener, void *data) void motionnotify(uint32_t time) { - struct timespec now; - if (!time) { - clock_gettime(CLOCK_MONOTONIC, &now); - time = now.tv_sec * 1000 + now.tv_nsec / 1000000; - } - wlr_idle_notify_activity(idle, seat); /* Update selmon (even while dragging a window) */ @@ -1608,6 +1602,13 @@ pointerfocus(Client *c, struct wlr_surface *surface, double sx, double sy, return; } + bool internal_call = !time; + if (!time) { + struct timespec now; + clock_gettime(CLOCK_MONOTONIC, &now); + time = now.tv_sec * 1000 + now.tv_nsec / 1000000; + } + /* If surface is already focused, only notify of motion */ if (surface == seat->pointer_state.focused_surface) { wlr_seat_pointer_notify_motion(seat, time, sx, sy); @@ -1626,7 +1627,7 @@ pointerfocus(Client *c, struct wlr_surface *surface, double sx, double sy, return; #endif - if (sloppyfocus) + if (sloppyfocus && !internal_call) focusclient(c, false); }