Skip to content
  • Jonas Ådahl's avatar
    xdg-shell: Add support for explicit popup repositioning · 26f494ed
    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: default avatarJonas Ådahl <jadahl@gmail.com>
    Reviewed-by: default avatarMike Blumenkrantz <michael.blumenkrantz@gmail.com>
    Reviewed-by: Simon Ser's avatarSimon Ser <contact@emersion.fr>
    26f494ed