-
Jonas Ådahl authored
This commit adds protocol additions making it possible to request that a popup should be repositioned according to a new xdg_positioner object. Explicit popup moving is done using a new request on xdg_popup: xdg_popup.reposition. What it does is change the parameters used for positioning a popup by providing a new xdg_positioner object. This request is coupled with a new event; xdg_popup.repositioned, sent together with the configure events (xdg_popup.configure and xdg_surface.configure) to notify about the completion of the reposition request. The reposition request also takes a token that is later passed via the repositioned event; this is done so that a client may determine for which reposition request the compositor has sent configure events. Synchronization between surfaces to avoid state application race condition are deliberately left out, and should be handled by an external protocol. To brief the compositor of the future dimension of the parent that the compositor should position the popup against, a xdg_positioner.set_parent_size request is added. Lastly, a request to couple a xdg_positioner object with a parent configure event is added (xdg_positioner.set_parent_configure) in order for a compositor to pair a popup reposition request with a pending configure event, and it's resulting window geometry. This is necessary to, for example, properly constrain a popup given a future parent state. An example of when this may be necessary is an interactive resize where both the toplevel position and the relative popup position changes. Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Reviewed-by: Simon Ser <contact@emersion.fr>
26f494ed
Loading