Skip to content
  • Tristan Van Berkom's avatar
    Fixed GtkWindow/GtkWidget to properly emit hierarchy changed for embedded toplevels · 93c80585
    Tristan Van Berkom authored
    Now GtkWindow takes some measures when setting toplevelness:
    
      - When a window becomes toplevel after being embedded it saves
        the visibility state and reshow's itself so that the window
        re-realizes and presents itself again automatically
    
      - When emitting hierarchy-changed, synthetically mark the toplevel
        as not anchored, this allows the hierarchy changed propagation to
        recurse properly.
    
    GtkWidget also takes care to unset the parent window *after* unparenting
    the widget and after emitting the heirarhcy changed that leaves a NULL
    toplevel.
    
    That means there are now 2 cycles of "hierarchy-changed" when removing
    an embedded toplevel from a parent, first one that makes the new toplevel
    a NULL one (since the toplevel flag is not yet restored), the second cycle
    makes the removed window toplevel again when setting the parent window
    to NULL.
    93c80585