summaryrefslogtreecommitdiffstats
path: root/src/layout.c
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2023-01-20 16:32:35 +0200
committerMarius Vlad <marius.vlad@collabora.com>2023-03-01 12:38:14 +0200
commit4af44df30c1784a69b96d310f152133a507bc2e1 (patch)
tree473b08dcd8123a3c30f2f8931972b98caa78b22d /src/layout.c
parent65fc5191f046ad8c7ba1bfd9e2e75afb925b4a21 (diff)
protocol, grpc-proxy: Add support for set_app_float
Add support for setting a window as float/popup. This allows either the application itself be set-up as float, or from other gRPC clients. Bug-AGL: SPEC-4673 Signed-off-by: Marius Vlad <marius.vlad@collabora.com> Change-Id: Ic7ee8203cd9c4dfcc51b7fc9709f35be504ae9d0
Diffstat (limited to 'src/layout.c')
-rw-r--r--src/layout.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/layout.c b/src/layout.c
index 028ff4a..bc489b2 100644
--- a/src/layout.c
+++ b/src/layout.c
@@ -788,6 +788,19 @@ ivi_compute_popup_position(const struct weston_output *output, struct weston_vie
}
+static bool
+ivi_surf_in_hidden_layer(struct ivi_compositor *ivi, struct ivi_surface *surface)
+{
+ struct weston_view *ev;
+
+ wl_list_for_each(ev, &ivi->hidden.view_list.link, layer_link.link) {
+ if (ev == surface->view)
+ return true;
+ }
+
+ return false;
+}
+
void
ivi_layout_popup_committed(struct ivi_surface *surface)
{
@@ -819,6 +832,10 @@ ivi_layout_popup_committed(struct ivi_surface *surface)
assert(surface->role == IVI_SURFACE_ROLE_POPUP);
+ /* remove it from hidden layer if present */
+ if (ivi_surf_in_hidden_layer(ivi, surface))
+ weston_layer_entry_remove(&view->layer_link);
+
weston_view_set_output(view, woutput);
ivi_compute_popup_position(woutput, view,