Skip to content
  • Thomas Lübking's avatar
    fix sendToScreen/checkWorkspaceGeometry · 39c35f8f
    Thomas Lübking authored
    Prime target is to preserve the in-screen
    condition of client AND window.i[1]
    Atm. when the client is fully in sight
    (but the window is not) - regardless of snapping
    or screen change - a workspace update (screen change,
    resolution change, adding/removing a strutting panel)
    would allow the client to partiall escape screen bounds.
    
    This is changed so that if the client is fully in sight,
    it's kept fully in sight (but not the decoration)
    If the entire window was fully in sight, it's also kept
    (as is right now)
    The code handles inner screen edges (if the client was in sight,
    the entire window will be if we'd bleed to the other screen)
    
    [1] I'd say that handling the client is more relevant,
    but foresee more complaints if the window wasn't handled anymore ;-)
    
    During that, i stumbled across some other issues.
    - when a window centered on one screen is moved to a screen smaller
      than the window, the window is shrinked to the dimensions of that
      screen and now randomly touches eg. left AND right edge. When
      moved back, the right and bottom edge were preferred
      (to the window was "moved" into the lower right corner).
      It's now kept centered.
    - geom_restore was saved before keeping the window in the new
      screen area (causing accidental drops on screen changes)
    
    BUG: 330968
    REVIEW: 122517
    FIXED-IN: 5.4
    
    Prime target is to preserve the in-screen condition
    of client AND window.[1]
    Atm. when the client is fully in sight (but the window is not) -
    regardless of snapping or screen change - a workspace update
    (screen change, resolution change, adding/removing a strutting
    panel) would allow the client to partiall escape screen bounds.
    
    This is changed so that if the client is fully in sight,
    it's kept fully in sight (but not the decoration)
    If the entire window was fully in sight, it's also kept
    (as is right now)
    The code handles inner screen edges (if the client was in sight,
    the entire window will be if we'd bleed to the other screen)
    
    [1] I'd say that handling the client is more relevant,
    but foresee more complaints if the window wasn't handled anymore ;-)
    
    During that, i stumbled across some other issues.
    - when a window centered on one screen is moved to a screen
    smaller than the window, the window is shrinked to the dimensions
    of that screen and now randomly touches eg. left AND right edge.
    When moved back, the right and bottom edge were preferred
    (to the window was "moved" into the lower right corner).
    It's now kept centered.
    - geom_restore was saved before keeping the window in the new
    screen area (causing accidental drops on screen changes)
    
    BUG: 330968
    REVIEW: 116029
    FIXED-IN: 5.3
    39c35f8f