dwl

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

commit a5a0674f6a92bc47eed51fa5e08279d9d6b1b369
parent 4dfa45659a6084cd3c800235040d83822f421afc
Author: Leonardo Hernández Hernández <leohdz172@protonmail.com>
Date:   Mon,  6 Jun 2022 22:50:50 -0500

improve client_from_wlr_surface()

Diffstat:
Mclient.h | 18+++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/client.h b/client.h @@ -232,10 +232,22 @@ client_min_size(Client *c, int *width, int *height) } static inline Client * -client_from_wlr_surface(struct wlr_surface *surface) +client_from_wlr_surface(struct wlr_surface *s) { - struct wlr_scene_node *n = surface->data; - return n ? n->data : NULL; + struct wlr_xdg_surface *surface; + +#ifdef XWAYLAND + struct wlr_xwayland_surface *xsurface; + if (s->role_data && wlr_surface_is_xwayland_surface(s) + && (xsurface = wlr_xwayland_surface_from_wlr_surface(s))) + return xsurface->data; +#endif + if (s->role_data && wlr_surface_is_xdg_surface(s) + && (surface = wlr_xdg_surface_from_wlr_surface(s)) + && surface->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL) + return surface->data; + + return NULL; } static inline Client *