diff options
author | 2023-01-20 16:32:35 +0200 | |
---|---|---|
committer | 2023-03-01 12:38:14 +0200 | |
commit | 4af44df30c1784a69b96d310f152133a507bc2e1 (patch) | |
tree | 473b08dcd8123a3c30f2f8931972b98caa78b22d /src/layout.c | |
parent | 65fc5191f046ad8c7ba1bfd9e2e75afb925b4a21 (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.c | 17 |
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, |