Skip to content
  • Jonas Ådahl's avatar
    gdk/surface: Replace move_to_rect() with GdkPopupLayout based API · ca71119a
    Jonas Ådahl authored
    Replace the gdk_surface_move_to_rect() API with a new GdkSurface
    method called gdk_surface_present_popup() taking a new GdkPopupLayout
    object describing how they should be laid out on screen.
    
    The layout properties provided are the same as the ones used with
    gdk_surface_move_to_rect(), except they are now set up using
    GdkPopupLayout.
    
    Calling gdk_surface_present_popup() will either show the popup at the
    position described using the popup layout object and a new unconstrained
    size, or reposition it accordingly.
    
    In some situations, such as when a popup is set to autohide, presenting
    may immediately fail, in case the grab was not granted by the display
    server.
    
    After a successful present, the result of the layout can be queried
    using the following methods:
    
     * gdk_surface_get_position() - to get the position relative to its
       parent
     * gdk_surface_get_width() - to get the current width
     * gdk_surface_get_height() - to get the current height
     * gdk_surface_get_rect_anchor() - to get the anchor point on the anchor
       rectangle the popup was effectively positioned against given
       constraints defined by the environment and the layout rules provided
       via GdkPopupLayout.
     * gdk_surface_get_surface_anchor() - the same as the one above but for
       the surface anchor.
    
    A new signal replaces the old "moved-to-rect" one -
    "popup-layout-changed". However, it is only intended to be emitted when
    the layout changes implicitly by the windowing system, for example if
    the monitor resolution changed, or the parent window moved.
    ca71119a