1. 26 May, 2020 1 commit
  2. 01 May, 2020 1 commit
  3. 30 Apr, 2020 1 commit
  4. 02 Apr, 2020 1 commit
    • Aleix Pol Gonzalez's avatar
      Make it possible to have a separate cursor for the tablet · 6abd23ed
      Aleix Pol Gonzalez authored
      Summary:
      As is KWin only had 1 Cursor which was a singleton. This made it impossible for
      us to properly implement the tablet (as in drawing tablets) support and show where
      we're drawing.
      This patch makes it possible to have different Cursors in KWin, it makes all the
      current code still follow the mouse but the tablet can still render a cursor.
      
      Test Plan: Tests pass, been using it and works as well as before but with beautiful tablet cursors.
      
      Reviewers: #kwin, cblack, davidedmundson
      
      Reviewed By: #kwin, cblack, davidedmundson
      
      Subscribers: davidedmundson, cblack, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D28155
      6abd23ed
  5. 30 Mar, 2020 2 commits
  6. 26 Mar, 2020 1 commit
    • Aleix Pol Gonzalez's avatar
      Remove overloads on virtual methods · 5eb84af4
      Aleix Pol Gonzalez authored
      Summary:
      Prefer virtual methods that take QRect and QSize rather than multi-int versions.
      Makes for clearer API and reduces the amount of code that was taking all of the
      components and turn it into a class.
      
      Reviewers: #kwin, zzag
      
      Reviewed By: #kwin, zzag
      
      Subscribers: zzag, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D28283
      5eb84af4
  7. 18 Mar, 2020 1 commit
  8. 05 Mar, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Introduce AbstractClient::createDecoration() · 4ae6c99c
      Vlad Zahorodnii authored
      Summary:
      We have duplicated code in InternalClient and XdgShellClient to create
      decorations. In order to get rid of the code duplication, this change
      introduces a method that AbstractClient subclasses can call to create
      a window decoration.
      
      Test Plan: Tests pass.
      
      Reviewers: #kwin, apol
      
      Reviewed By: apol
      
      Subscribers: apol, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D27822
      4ae6c99c
  9. 04 Mar, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Use AbstractClient instead of XdgShellClient wherever possible · be759b7d
      Vlad Zahorodnii authored
      Summary:
      Currently, we have only one shell client type - XdgShellClient. We use
      it when we are dealing with Wayland clients. But it isn't really a good
      idea because we may need to support shell surfaces other than xdg-shell
      ones, for example input panel surfaces.
      
      In order to make kwin more extensible, this change replaces all usages
      of the XdgShellClient class with the AbstractClient class.
      
      Test Plan: Existing tests pass.
      
      Reviewers: #kwin, davidedmundson
      
      Reviewed By: #kwin, davidedmundson
      
      Subscribers: davidedmundson, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D27778
      be759b7d
  10. 28 Feb, 2020 3 commits
    • Vlad Zahorodnii's avatar
      [wayland] Honor xdg-toplevel size constraints · 2b120e07
      Vlad Zahorodnii authored
      Summary:
      This change ensures that we honor surface size constraints specified by
      xdg-toplevel clients.
      
      Reviewers: #kwin, davidedmundson
      
      Reviewed By: #kwin, davidedmundson
      
      Subscribers: kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D26830
      2b120e07
    • Vlad Zahorodnii's avatar
      Refactor geometry constraints code · a75fb7f8
      Vlad Zahorodnii authored
      Summary:
      Currently, there are a couple of issues with sizeForClientSize(). First
      of all, we have a method called clientSizeToFrameSize() which does similar
      thing except applying geometry constraints and checking window rules. The
      other issue is that sizeForClientSize() is doing a bit too much, it checks
      window rules, it applies a bunch of geometry constrains. Sometimes it
      does not perform conversion between client sizes and frame sizes!
      
      This change attempts to address those issues by replacing sizeForClientSize
      with two similar methods and changing semantics of some methods of the
      X11Client class.
      
      The most significant difference between sizeForClientSize() and the new
      methods is that neither constrainClientSize() nor constrainFrameSize()
      check window rules. This is up to users of those methods. In many places,
      we don't have to check window rules because we check isResizable(),
      which returns false if the frame size is enforced by a window rule.
      
      Reviewers: #kwin, davidedmundson
      
      Reviewed By: #kwin, davidedmundson
      
      Subscribers: davidedmundson, romangg, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D26828
      a75fb7f8
    • David Edmundson's avatar
      Honour panelTakesFocus for other plasmashell types · ed576818
      David Edmundson authored
      Summary:
      The semantics of a window taking focus on user interaction apply to more roles. See D25851.
      
      Given it is used by `KWindowSystem::forceActivateWindow` in kwayland-integration, it makes sense to pass focus to the window once it gets this property set.
      
      Reviewers: #kwin
      
      Subscribers: kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D25968
      ed576818
  11. 22 Feb, 2020 4 commits
    • Nicolas Fella's avatar
      Revert "[kcm/effects] Clip ListView" · 7159684c
      Nicolas Fella authored
      Bad merge
      
      This reverts commit b7130442.
      7159684c
    • Nicolas Fella's avatar
      [kcm/effects] Clip ListView · b7130442
      Nicolas Fella authored
      Summary:
      Otherwise the content overflows the frame when scrolling.
      
      QQC2 scrollview docs say "ScrollView does not automatically clip its contents. If it is not used as a full-screen item, you should consider setting the clip property to true"
      
      Test Plan:
      Before:
      {F8121150}
      
      After:
      {F8121152}
      
      Reviewers: #kwin, #plasma, ngraham
      
      Reviewed By: ngraham
      
      Subscribers: ngraham, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D27558
      b7130442
    • Nicolas Fella's avatar
      Revert "[kcm/effects] Clip ListView" · cdc5ea19
      Nicolas Fella authored
      Bad merge
      
      This reverts commit 5babf52d.
      cdc5ea19
    • Nicolas Fella's avatar
      [kcm/effects] Clip ListView · 5babf52d
      Nicolas Fella authored
      Summary:
      Otherwise the content overflows the frame when scrolling.
      
      QQC2 scrollview docs say "ScrollView does not automatically clip its contents. If it is not used as a full-screen item, you should consider setting the clip property to true"
      
      Test Plan:
      Before:
      {F8121150}
      
      After:
      {F8121152}
      
      Reviewers: #kwin, #plasma, ngraham
      
      Reviewed By: ngraham
      
      Subscribers: ngraham, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D27558
      5babf52d
  12. 12 Feb, 2020 2 commits
    • Vlad Zahorodnii's avatar
      Make support for the maximized mode partially optional · 5af81c1c
      Vlad Zahorodnii authored
      Summary:
      Not all Client classes have support for the maximized mode. Therefore,
      it can be made opt-in to reduce the amount of plumbed methods.
      
      Unfortunately, there a few places, which don't have any connection with
      the maximized mode, where AbstractClient::geometryRestore() is used, so
      it cannot be made 100% optional at the moment.
      
      Reviewers: #kwin
      
      Subscribers: kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D27169
      5af81c1c
    • Vlad Zahorodnii's avatar
      Introduce Toplevel::frameGeometryChanged signal · 15af09c7
      Vlad Zahorodnii authored
      Summary:
      Currently we have two signals that are emitted when the Toplevel's geometry
      changes - geometryShapeChanged() and geometryChanged(). The former signal
      is used primarily to invalidate cached window quads and the latter is
      sort of emitted when the frame geometry changes. But it's not that easy. We
      have a bunch of connects that link those signals together...
      
      The worst part about all of this is that the window quads cache gets
      invalidated every time a geometry update occurs, for example when user
      moves a window around on the screen.
      
      This change introduces a new signal and deprecates the existing geometryChanged
      signal. frameGeometryChanged is similar to geometryChanged except that it is
      emitted when an _actual_ geometry change has occurred.
      
      We do still emit geometryShapeChanged signal. However, in long term, we
      need to get rid of this signal or come up with something that makes sense
      and doesn't require us to waste computational resources.
      
      Reviewers: #kwin, davidedmundson
      
      Reviewed By: #kwin, davidedmundson
      
      Subscribers: davidedmundson, romangg, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D26863
      15af09c7
  13. 03 Feb, 2020 3 commits
  14. 31 Jan, 2020 1 commit
  15. 29 Jan, 2020 3 commits
  16. 23 Jan, 2020 2 commits
  17. 14 Jan, 2020 1 commit
  18. 06 Jan, 2020 1 commit
    • David Edmundson's avatar
      Clamp XdgShellClient::clientSize to surface size, not m_windowGeometry · 89024e2b
      David Edmundson authored
      Summary:
      It's perfectly legitimate to call setWindowSize before a buffer is
      attached. This seems to have happen with plasma surfaces that commit
      when attaching a shadow, but technically could happen anywhere.
      
      By clamping to the applied surface here, we get the wrong window size
      cached and not re-evaluated when a surface is eventually applied. This
      leaves us thinking the windowsize is empty but with a massive margin
      which actually holds the content.
      
      We want all internal usages of xdgshellclient to use the window geometry
      set. Only the wider kwin part needs to care about clamping it to the
      surface.
      
      This fixes popup placement in the plasma panel
      BUG: 415317
      
      As well as ghost notification popups with no background contrast that
      you can't interact with.
      
      Test Plan: Ran kwin
      
      Reviewers: #kwin, zzag
      
      Reviewed By: #kwin, zzag
      
      Subscribers: romangg, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D26233
      89024e2b
  19. 23 Dec, 2019 1 commit
  20. 04 Dec, 2019 1 commit
  21. 27 Nov, 2019 4 commits
  22. 11 Oct, 2019 1 commit
    • Marco Martin's avatar
      [wayland] Make sure fullscreen windows aren't repositioned · 10ace126
      Marco Martin authored
      Summary:
      on X11, setFullScreen is always called after Placement::place()
      so they always have the correct geometry.
      on wayland, the window if is shown directly as fullscren,
      is set fullscreen in init() then place() is evecuted, potentially
      moving it to a wrong position and potentially even size (which happens
      with maximiziong placement strategy)
      so instead of place() the client needs to be explicitly set at
      fullscreen geometry
      
      Test Plan:
      fullscreen windows always appear with the proper geometry
      autotests still pass
      
      Reviewers: #kwin, #plasma, davidedmundson
      
      Reviewed By: #kwin, #plasma, davidedmundson
      
      Subscribers: zzag, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D24542
      10ace126
  23. 09 Oct, 2019 1 commit
    • Marco Martin's avatar
      don't allow to resize or move fullscreen windows · 1a9a49ab
      Marco Martin authored
      Summary:
      add the same check of the Client class: if a window
      is fullscreen, is not movable nor resizable
      
      Test Plan:
      Doesn't have any visible regression over normal usage,
      this partially tackles a bug that can be seen in plasma mobile:
      if the placement is "maximizing", then asking windows to be
      shown as fullscreen has no effect and they will always be shown as a normal
      maximized window.
      
      this now doesn't happen anymore.. most of the times,
       as there must be some race condition
      as a concause of the problem
      
      Reviewers: #plasma, davidedmundson
      
      Reviewed By: #plasma, davidedmundson
      
      Subscribers: kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D24515
      1a9a49ab
  24. 02 Oct, 2019 2 commits