diff options
| author | Devin J. Pohly <djpohly@gmail.com> | |
|---|---|---|
| 2020-04-30 11:37:04 -0500 | ||
| committer | Devin J. Pohly <djpohly@gmail.com> | |
| 2020-04-30 11:37:04 -0500 | ||
| commit | 2c134faa406627a3c8ca935ac4e5c502b4d4d01e (patch) | |
| tree | e54ef915a319c82e7cdf868704129fb0bf4e1f94 | |
| parent | 33b0236858f5c885d47501c19948299a4a1d83a2 (diff) | |
| download | dwl-2c134faa406627a3c8ca935ac4e5c502b4d4d01e.tar.gz dwl-2c134faa406627a3c8ca935ac4e5c502b4d4d01e.tar.bz2 dwl-2c134faa406627a3c8ca935ac4e5c502b4d4d01e.zip | |
allow NULL surface with client in focus functions
@@ -465,7 +465,7 @@ focusclient(Client *c, struct wlr_surface *surface, int lift) { if (c) { /* assert(VISIBLEON(c, c->mon)); ? */ - /* If no surface provided, use the client's xdg_surface */ + /* Use top level surface if nothing more specific given */ if (!surface) surface = c->xdg_surface->surface; /* Focus the correct monitor as well */ @@ -763,6 +763,9 @@ void pointerfocus(Client *c, struct wlr_surface *surface, double sx, double sy, uint32_t time) { + /* Use top level surface if nothing more specific given */ + if (c && !surface) + surface = c->xdg_surface->surface; /* If surface is already focused, only notify of motion */ if (surface && surface == seat->pointer_state.focused_surface) { wlr_seat_pointer_notify_motion(seat, time, sx, sy); |