diff options
author | Marius Vlad <marius.vlad@collabora.com> | 2020-06-11 18:07:42 +0300 |
---|---|---|
committer | Marius Vlad <marius.vlad@collabora.com> | 2020-06-15 20:23:38 +0300 |
commit | 51be2ca7b38cacb368a9b49423dae7e3c84a4b98 (patch) | |
tree | 1ebdb7149bed4ae0dcd574c29c18a9f85ee22925 /src/layout.c | |
parent | 7854caaca193dbc68c7384f21233a1637ab0382e (diff) |
layout: Clip the view to the size specified by width and height
This uses the bx and by as origin for the bounding box if those were
passed on. The compositor will set up a mask clip for the window if the
both width and height are positive.
This also removes the geometry of the surface and passes the x and y values
directly.
Bug-AGL: SPEC-3419
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: I174f1ccbffad3c99e74fbb5ee90888b4ad879230
Diffstat (limited to 'src/layout.c')
-rw-r--r-- | src/layout.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/layout.c b/src/layout.c index a11aadc..c078ac9 100644 --- a/src/layout.c +++ b/src/layout.c @@ -517,22 +517,22 @@ ivi_layout_popup_committed(struct ivi_surface *surface) struct weston_output *woutput = output->output; struct weston_view *view = surface->view; - struct weston_geometry geom; if (surface->view->is_mapped) return; - geom = weston_desktop_surface_get_geometry(dsurface); - weston_log("(popup) geom x %d, y %d, width %d, height %d\n", geom.x, geom.y, - geom.width, geom.height); - assert(surface->role == IVI_SURFACE_ROLE_POPUP); weston_view_set_output(view, woutput); - if (surface->popup.x || surface->popup.y) - weston_view_set_position(view, surface->popup.x, surface->popup.y); - else - weston_view_set_position(view, geom.x, geom.y); + weston_view_set_position(view, surface->popup.x, surface->popup.y); + + /* only clip the pop-up dialog window if we have a valid + * width and height being passed on. Users might not want to have one + * set-up so only enfore it is really passed on. */ + if (surface->popup.bb.width > 0 && surface->popup.bb.height > 0) + weston_view_set_mask(view, surface->popup.bb.x, surface->popup.bb.y, + surface->popup.bb.width, surface->popup.bb.height); + weston_layer_entry_insert(&ivi->popup.view_list, &view->layer_link); weston_view_update_transform(view); |