summaryrefslogtreecommitdiffstats
path: root/src/layout.c
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2024-02-14 13:26:44 +0200
committerMarius Vlad <marius.vlad@collabora.com>2024-02-22 13:51:33 +0000
commit754636273ffc6b872d6fb194009c857e76e7cec1 (patch)
treea922bfd843d5a6ad6a9ae6914eb394c7e7426a56 /src/layout.c
parent16d8d1af63ea1bbdaa9223cbf3e01cb6698f1eb0 (diff)
layout/shell: Keep track of previous role
And with it also handle the re-mapping/unmapping of previous active window such we don't run into weird behaviours, and be able to revert back to the original output dimensions when going back to normal windows. Bug-AGL: SPEC-4839 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: I3703de998b0baa8a2b9d72276dcd56b315d3ca1a
Diffstat (limited to 'src/layout.c')
-rw-r--r--src/layout.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/layout.c b/src/layout.c
index a2cf48c..a06b1e5 100644
--- a/src/layout.c
+++ b/src/layout.c
@@ -1137,7 +1137,7 @@ ivi_layout_activate_by_surf(struct ivi_output *output, struct ivi_surface *surf)
return;
}
- if (surf->sticky && surf->role == IVI_SURFACE_ROLE_TILE) {
+ if (surf->sticky && surf->role == IVI_SURFACE_ROLE_TILE && output->active == surf) {
weston_log("Application %s is already active on output %s (split role)\n",
app_id, output->output->name);
return;
@@ -1179,7 +1179,8 @@ ivi_layout_activate_by_surf(struct ivi_output *output, struct ivi_surface *surf)
/* the background surface is already "maximized" so we don't need to
* add to the hidden layer */
- if (surf->role == IVI_SURFACE_ROLE_BACKGROUND) {
+ if (surf->role == IVI_SURFACE_ROLE_BACKGROUND &&
+ output->active->role != IVI_SURFACE_ROLE_TILE) {
ivi_layout_activate_complete(output, surf);
return;
}