Skip to content
  • Vlad Zahorodnii's avatar
    [scenes/opengl] Fix overlapping shadow tiles · 7637cfc2
    Vlad Zahorodnii authored
    Summary:
    This problem appears if shadow corner tiles are too big and
    some window has size smaller than 2 * shadowTileSize.
    
    This change tries to address the problem above by exclusing
    overlapping tile parts. If there are any two overlapping corners
    then tile between them(top/right/bottom/left) is not rendered.
    
    Also, because some corner tile parts can be excluded, corner tiles
    are expected to be symmetrical(i.e. if we remove right half from
    the top-left tile and left half from the top-right tile and
    stick them together, they still look fine, there are no misalignments, etc).
    Most shadows(e.g. shadows from Breeze) have such behaviour.
    
    No tiles are overlapping
    
    {F5728514, layout=center, size=full}
    
    Overlapping tiles
    
    {F5728516, layout=center, size=full}
    
    And this is how it supposed to be
    
    {F5728517, layout=center, size=full}
    
    Test Plan:
    * apply D11069 to Breeze
    * in System Settings/Application Style/Window Decorations, choose "Very Large" shadow size
    * open Konsole
    * resize it to a minimum possible size
    
    Reviewers: #kwin, graesslin, davidedmundson
    
    Reviewed By: #kwin, davidedmundson
    
    Subscribers: davidedmundson, ngraham, anemeth, abetts, kwin
    
    Tags: #kwin
    
    Differential Revision: https://phabricator.kde.org/D10811
    7637cfc2