From 8f63557ed7695a8ae5a4acb85a2693dc36be85bb Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Thu, 7 Jan 2021 15:04:08 +0100 Subject: xdg shell: add wlr_xdg_surface_popup_surface_at() This function will allow compositors to implement input handling in a way consistent with rendering more easily. Calling wlr_xdg_surface_surface_at() and checking if the result is a wlr_xdg_popup is flawed as there may be subsurfaces in the popup tree. --- include/wlr/types/wlr_xdg_shell.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'include') diff --git a/include/wlr/types/wlr_xdg_shell.h b/include/wlr/types/wlr_xdg_shell.h index a519ed8b..102b26cf 100644 --- a/include/wlr/types/wlr_xdg_shell.h +++ b/include/wlr/types/wlr_xdg_shell.h @@ -369,6 +369,15 @@ struct wlr_surface *wlr_xdg_surface_surface_at( struct wlr_xdg_surface *surface, double sx, double sy, double *sub_x, double *sub_y); +/** + * Find a surface within this xdg-surface's popup tree at the given + * surface-local coordinates. Returns the surface and coordinates in the leaf + * surface coordinate system or NULL if no surface is found at that location. + */ +struct wlr_surface *wlr_xdg_surface_popup_surface_at( + struct wlr_xdg_surface *surface, double sx, double sy, + double *sub_x, double *sub_y); + bool wlr_surface_is_xdg_surface(struct wlr_surface *surface); struct wlr_xdg_surface *wlr_xdg_surface_from_wlr_surface( -- cgit v1.2.3