diff options
author | Marius Vlad <marius.vlad@collabora.com> | 2024-01-25 18:55:15 +0200 |
---|---|---|
committer | Marius Vlad <marius.vlad@collabora.com> | 2024-02-22 13:51:33 +0000 |
commit | 09fa5536e759792c80341305a536cd59aa801c6d (patch) | |
tree | 407b3133e0915a8f70238c40be9bb8452532ca45 /src/ivi-compositor.h | |
parent | 8a7f3fbbf0fd94bb1c29c59663392506a213c4b1 (diff) |
layout/shell: Add basic support for split window
This introduces a new set_split request to allow changing the tile
orientation of the window. See the protocol XML for more implementation
details.
Of importance difference from the previous implementation is that
this patch makes use of the xdg-shell protocol, such that orientation
is being handled over the configure event to the client.
The protocol specifies a width to allow the client to control how much
of the output be assign the split window and also a sticky window
functionality.
Bug-AGL: SPEC-4839
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ia8b7d04a7514f55d647c3ea76b13bab51a3586aa
Diffstat (limited to 'src/ivi-compositor.h')
-rw-r--r-- | src/ivi-compositor.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/ivi-compositor.h b/src/ivi-compositor.h index 4c04ec7..1c1d678 100644 --- a/src/ivi-compositor.h +++ b/src/ivi-compositor.h @@ -117,6 +117,8 @@ struct ivi_compositor { struct wl_list split_pending_apps; struct wl_list remote_pending_apps; + struct wl_list pending_apps; /** pending_app::link */ + struct wl_listener destroy_listener; struct wl_listener transform_listener; const struct weston_xwayland_surface_api *xwayland_surface_api; @@ -194,6 +196,7 @@ enum ivi_surface_role { IVI_SURFACE_ROLE_SPLIT_V, IVI_SURFACE_ROLE_SPLIT_H, IVI_SURFACE_ROLE_REMOTE, + IVI_SURFACE_ROLE_TILE, }; struct ivi_bounding_box { @@ -229,6 +232,18 @@ struct pending_remote { struct wl_list link; /** ivi_compositor::remote_pending_apps */ }; +struct pending_app { + struct ivi_output *ioutput; + enum ivi_surface_role role; + char *app_id; + struct wl_list link; /** ivi_compositor::pending_apps */ +}; + +struct pending_app_tile { + struct pending_app base; + uint32_t orientation; +}; + struct ivi_desktop_surface { struct ivi_output *pending_output; struct ivi_output *last_output; @@ -278,6 +293,7 @@ struct ivi_surface { struct wl_list link; int focus_count; + uint32_t orientation; struct { enum ivi_surface_flags flags; @@ -522,4 +538,7 @@ parse_activation_area(const char *geometry, struct ivi_output *output); bool is_shell_surface_xwayland(struct ivi_surface *surf); +void +ivi_layout_reset_split_surfaces(struct ivi_compositor *ivi); + #endif |