From 319e4125ab699c2346c7d1b66ff8d06064ec6ac2 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 13 Nov 2023 10:31:00 +0100 Subject: xdg-shell: add wlr_xdg_{toplevel,popup}_try_from_wlr_surface() Convenience helpers for compositors. Saves them the trouble of manually checking the role (and if they forget to do so, prevents an invalid cast). --- include/wlr/types/wlr_xdg_shell.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'include') diff --git a/include/wlr/types/wlr_xdg_shell.h b/include/wlr/types/wlr_xdg_shell.h index b81b7a3b..29ced596 100644 --- a/include/wlr/types/wlr_xdg_shell.h +++ b/include/wlr/types/wlr_xdg_shell.h @@ -485,6 +485,24 @@ struct wlr_surface *wlr_xdg_surface_popup_surface_at( */ struct wlr_xdg_surface *wlr_xdg_surface_try_from_wlr_surface(struct wlr_surface *surface); +/** + * Get a struct wlr_xdg_toplevel from a struct wlr_surface. + * + * Returns NULL if the surface doesn't have the xdg_surface role, the + * xdg_surface is not a toplevel, or the xdg_surface/xdg_toplevel objects have + * been destroyed. + */ +struct wlr_xdg_toplevel *wlr_xdg_toplevel_try_from_wlr_surface(struct wlr_surface *surface); + +/** + * Get a struct wlr_xdg_popup from a struct wlr_surface. + * + * Returns NULL if the surface doesn't have the xdg_surface role, the + * xdg_surface is not a popup, or the xdg_surface/xdg_popup objects have + * been destroyed. + */ +struct wlr_xdg_popup *wlr_xdg_popup_try_from_wlr_surface(struct wlr_surface *surface); + /** * Get the surface geometry. * -- cgit v1.2.3