aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2021-10-25 18:29:24 +0200
committerSimon Ser <contact@emersion.fr>2021-11-25 18:53:12 +0100
commit585a908a014a49a718771375264ed284d4599d59 (patch)
tree6de07ccb58bf61d943d3ccb04b030da08b4c5497 /include
parent1d3dd7fc08f22f2e82cb812ced822369e984d845 (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')
-rw-r--r--include/wlr/types/wlr_scene.h11
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