diff options
author | Simon Ser <contact@emersion.fr> | 2021-10-25 18:29:24 +0200 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2021-11-25 18:53:12 +0100 |
commit | 585a908a014a49a718771375264ed284d4599d59 (patch) | |
tree | 6de07ccb58bf61d943d3ccb04b030da08b4c5497 /include/wlr | |
parent | 1d3dd7fc08f22f2e82cb812ced822369e984d845 (diff) |
scene: add wlr_scene_xdg_surface_create
This allows compositors to easily add an xdg_surface to the
scene-graph while retaining the ability to unconstraint popups
and decide their final position.
Compositors can handle new popups with the wlr_xdg_shell.new_surface
event, get the parent scene-graph node via wlr_xdg_popup.parent.data,
create a new scene-graph node via wlr_scene_xdg_surface_tree_create,
and unconstraint the popup if they want to.
Diffstat (limited to 'include/wlr')
-rw-r--r-- | include/wlr/types/wlr_scene.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/wlr/types/wlr_scene.h b/include/wlr/types/wlr_scene.h index 538b8941..622dbb28 100644 --- a/include/wlr/types/wlr_scene.h +++ b/include/wlr/types/wlr_scene.h @@ -25,6 +25,7 @@ struct wlr_output; struct wlr_output_layout; +struct wlr_xdg_surface; enum wlr_scene_node_type { WLR_SCENE_NODE_ROOT, @@ -298,4 +299,14 @@ bool wlr_scene_attach_output_layout(struct wlr_scene *scene, struct wlr_scene_node *wlr_scene_subsurface_tree_create( struct wlr_scene_node *parent, struct wlr_surface *surface); +/** + * Add a node displaying an xdg_surface and all of its sub-surfaces to the + * scene-graph. + * + * The origin of the returned scene-graph node will match the top-left corner + * of the xdg_surface window geometry. + */ +struct wlr_scene_node *wlr_scene_xdg_surface_create( + struct wlr_scene_node *parent, struct wlr_xdg_surface *xdg_surface); + #endif |