1. 24 Nov, 2020 1 commit
  2. 30 Oct, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Store repaint regions per individual screen · 74391e25
      Vlad Zahorodnii authored
      AnimationEffect schedules repaints in postPaintWindow() and performs
      cleanup in preScreenPaint(). With the X11-style rendering, this doesn't
      have any issues, scheduled repaints will be reset during the next
      compositing cycle.
      
      But with per screen rendering, we might hit the following case
      
          - Paint screen 0
          - Reset scheduled repaints
          - AnimationEffect::prePaintScreen(): update the timeline
          - AnimationEffect::postPaintScreen(): schedule a repaint
      
          - Paint screen 1
          - Reset scheduled repaints
          - AnimationEffect::prePaintScreen(): destroy the animation
          - AnimationEffect::postPaintScreen(): no repaint is scheduled
      
          - Return to the event loop
      
      In this scenario, the repaint region scheduled by AnimationEffect will
      be lost when compositing is performed on screen 1.
      
      There is no any other way to fix this issue but maintain repaint regions
      per each individual screen if per screen rendering is enabled.
      
      BUG: 428439
      74391e25
  3. 26 Oct, 2020 1 commit
    • Vlad Zahorodnii's avatar
      wayland: Provide a way to force xdg surface configure events · 0ad49016
      Vlad Zahorodnii authored
      XdgSurfaceClient tries to avoid sending unnecessary configure events,
      but in some cases, the compositor has to send one even if the surface
      state hasn't changed, for example in response to a set_maximized()
      request, etc.
      
      This change introduces a special flag to indicate that the scheduled
      event has to be sent no matter what.
      0ad49016
  4. 23 Oct, 2020 1 commit
  5. 13 Oct, 2020 1 commit
    • Vlad Zahorodnii's avatar
      wayland: Block geometry updates while placing popups · f369a355
      Vlad Zahorodnii authored
      Placement::placeTransient() checks the frame geometry right after
      setting it. That is a problem because geometry updates for
      XdgPopupClient are made in async fashion. We need to block geometry
      updates in order to ensure that window placement code sees correct
      geometry.
      f369a355
  6. 25 Sep, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Enable shadow protocol support for all Wayland clients · f24f2bd5
      Vlad Zahorodnii authored
      The main motivation for this change is to enable support for our
      proprietary shadow protocol in LayerShellV1Client.
      
      Previously we couldn't move code that handles shadows in WaylandClient
      because WaylandClient::bufferGeometry() was a pure virtual method.
      f24f2bd5
  7. 24 Sep, 2020 1 commit
  8. 18 Sep, 2020 1 commit
  9. 10 Sep, 2020 1 commit
  10. 03 Sep, 2020 7 commits
  11. 01 Sep, 2020 1 commit
    • Marco Martin's avatar
      Fix size restore upon keyboard close in XdgSurfaceClient · 97f4712f
      Marco Martin authored
      in XdgSurfaceClient setFrameGeometry is async,
      so we can't rely on it having the final value immediately.
      make setVirtualKeyboardGeometry a virtual.
      in the implementation on setVirtualKeyboardGeometry
      use requestedFrameGeometry() instead of frameGeometry()
      97f4712f
  12. 24 Aug, 2020 1 commit
  13. 21 Aug, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Use universal helper for writing toplevels to QDebug streams · 90b53f41
      Vlad Zahorodnii authored
      Toplevel::debug() is one of annoyances that you need to deal with when
      implementing a new client type. It can be tempting to just write "this"
      to the stream, but it will result in a crash.
      
      In order to make implementing new client types easier, this change
      introduces a debug stream insertion operator overload that works for all
      kinds of the Toplevel class.
      90b53f41
  14. 20 Aug, 2020 4 commits
  15. 19 Aug, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Refactor color scheme related code · 9e74199e
      Vlad Zahorodnii authored
      Currently, we have two functions that update the color scheme for a
      client - updateColorScheme(QString) and updateColorScheme(). Even though
      they both share the same name, they do different things. The first one
      sets the specified color scheme, while the other determines the color
      scheme preferred by the client and assigns it.
      
      This change refactors the color scheme initialization code so we no
      longer need those two methods. The setColorScheme() method sets the
      specified color scheme, and the preferredColorScheme() method returns
      the color scheme preferred by the client. Sub-classes of AbstractClient
      can override the preferredColorScheme() method in order to add support
      for platform-specific color scheme protocols.
      
      The end result: color scheme related code is a bit more comprehensible.
      9e74199e
  16. 18 Aug, 2020 3 commits
  17. 07 Aug, 2020 2 commits
    • Vlad Zahorodnii's avatar
      Prettify license headers · 4ce853e8
      Vlad Zahorodnii authored
      4ce853e8
    • Vlad Zahorodnii's avatar
      Switch to SPDX license markers · 1fb9f6f1
      Vlad Zahorodnii authored
      The main advantage of SPDX license identifiers over the traditional
      license headers is that it's more difficult to overlook inappropriate
      licenses for kwin, for example GPL 3. We also don't have to copy a
      lot of boilerplate text.
      
      In order to create this change, I ran licensedigger -r -c from the
      toplevel source directory.
      1fb9f6f1
  18. 06 Aug, 2020 1 commit
  19. 29 Jul, 2020 1 commit
  20. 27 Jul, 2020 1 commit
  21. 22 Jul, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Check if we successfully restored input focus · 55588507
      Vlad Zahorodnii authored and Vlad Zahorodnii's avatar Vlad Zahorodnii committed
      In rare cases, Workspace::restoreFocus() may fail, for example when the
      most recently activated client is about to be destroyed or unmapped.
      
      If it happens that we cannot restore the focus, then mark the window in
      FocusIn event as active.
      
      CCBUG: 424223
      55588507
  22. 17 Jul, 2020 1 commit
  23. 16 Jul, 2020 2 commits
  24. 15 Jul, 2020 1 commit
  25. 07 Jul, 2020 2 commits
  26. 01 Jul, 2020 1 commit