1. 19 Feb, 2020 1 commit
    • 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