diff options
author | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-06-06 22:50:50 -0500 |
---|---|---|
committer | Leonardo Hernández Hernández <leohdz172@protonmail.com> | 2022-06-06 22:51:58 -0500 |
commit | a5a0674f6a92bc47eed51fa5e08279d9d6b1b369 (patch) | |
tree | e1506defa63e3a9a431e6dc3cd77dd15a4c826ad | |
parent | 4dfa45659a6084cd3c800235040d83822f421afc (diff) |
improve client_from_wlr_surface()
-rw-r--r-- | client.h | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -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 * |