Skip to content
  • Florian Müllner's avatar
    window: Really propagate effective on-all-workspaces setting to transients · d4c070da
    Florian Müllner authored and Jonas Ådahl's avatar Jonas Ådahl committed
    Commit cda95790 fixed a corner case when setting the initial workspace
    state of transient windows, but it still missed a case:
    
    should_be_on_all_workspaces() returns whether the window should be on all
    workspaces according to its properties/placement, but it doesn't take
    transient relations into account.
    
    That means in case of nested transients, we can still fail the assert:
    
     1. on-all-workspaces toplevel
     2. should_be_on_all_workspaces() is TRUE for the first transient's parent,
        as the window from (1) has on_all_workspaces_requested == TRUE
     3. should_be_on_all_workspaces() is FALSE for the second transient's
        parent, as the window from (2) is only on-all-workspace because
        of its parent
    
    We can fix this by either using the state from the root ancestor
    instead of the direct transient parent, or by using the parent's
    on_all_workspaces_state.
    
    The latter is simpler, so go with that.
    
    GNOME/mutter#1083
    d4c070da