summaryrefslogtreecommitdiffstats
path: root/src/desktop.c
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2020-05-01 14:31:07 +0300
committerMarius Vlad <marius.vlad@collabora.com>2020-06-08 17:26:36 +0300
commita9ae8d75026b1fa1ef32d143da23bc8ee9aedeaa (patch)
tree0f4c0c9dd10a67c00ab900649d6a079e8cd335f6 /src/desktop.c
parent831d1b21b5e786d2e5e804ca5a6a2a2b1dfacd1e (diff)
layout: Resize the active surface when doing the split
This adds an intermediate geometry variable which is used to save and restore to the original available geometry when destroying the split surface. This takes care to inform the client that a new resize is needed when the split surface is destroyed or when the split surface is committed. The width and height of the split surface is derived from the available geometry area size (the available size of the background surface) but this can further adapted to be based on the split window size (that is, it could be specified by the client). This assumption is there to simplify the implementation. Bug-AGL: SPEC-3334 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ia484a922a7cbd314db2c878f81cb548458d1c1cd
Diffstat (limited to 'src/desktop.c')
-rw-r--r--src/desktop.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/desktop.c b/src/desktop.c
index d166626..7502d6c 100644
--- a/src/desktop.c
+++ b/src/desktop.c
@@ -126,6 +126,16 @@ desktop_surface_removed(struct weston_desktop_surface *dsurface, void *userdata)
else
return;
+ /* resize the active surface to the original size */
+ if (surface->role == IVI_SURFACE_ROLE_SPLIT_H ||
+ surface->role == IVI_SURFACE_ROLE_SPLIT_V) {
+ if (output && output->active) {
+ ivi_layout_desktop_resize(output->active, output->area_saved);
+ }
+ /* restore the area back so we can re-use it again if needed */
+ output->area = output->area_saved;
+ }
+
/* reset the active surface as well */
if (output && output->active && output->active == surface) {
output->active->view->is_mapped = false;