1. 01 Jun, 2020 5 commits
    • Vlad Zahorodnii's avatar
      [effects/fade] Start the animation on only windowAdded or windowClosed · 6f822b22
      Vlad Zahorodnii authored
      windowShown and windowHidden are emitted when the window becomes visible
      and hidden, respectively. For example, that can be the case when the
      window has been minimized or unminimized. We have to start animations
      only when windowAdded or windowClosed has been emitted.
      6f822b22
    • Vlad Zahorodnii's avatar
      [wayland] Destroy XdgToplevelClient and XdgPopupClient on unmap · df9e36ee
      Vlad Zahorodnii authored
      There are several ways to handle unmapping of a wl_surface. The first
      one is to destroy the associated AbstractClient instance. The second one
      is to transition the AbstractClient in a special state.
      
      The problem with the second approach is that it makes animations such as
      fade out more difficult to handle since effects in kwin are geared more
      towards the first approach (destroying AbstractClient).
      df9e36ee
    • Vlad Zahorodnii's avatar
      [wayland] Rework xdg-shell implementation · 31ea780d
      Vlad Zahorodnii authored
      Summary:
      This change splits the XdgShellClient class to better match existing
      abstractions in the xdg-shell protocol and fix a few issues related to
      sending configure events.
      
      In the new client classes, configure events are handled differently.
      Instead of blocking configure events, we try to send them as late as
      possible. Delaying configure events will let us merge changeMaximize()
      for X11 clients and Wayland clients and it also fixes the bug where
      we don't send the final configure event when user has finished resizing
      a window.
      
      Given that configure events are not sent immediately, XdgSurfaceClient
      keeps the last requested frame geometry and the last requested client
      geometry.
      
      This patch doesn't intend to fix all issues in kwin's implementation of
      the xdg-shell protocol. For example, we still handle surface unmapping
      very poorly.
      
      Test Plan: Tests pass.
      
      Reviewers: #kwin
      
      Subscribers: kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D27861
      31ea780d
    • Vlad Zahorodnii's avatar
      [effects/zoom] Implement text caret tracking · 076b8bc1
      Vlad Zahorodnii authored
      The text caret tracking feature allows to keep the text caret inside the
      zoomed area. It can be especially useful when the zoomed area is smaller
      than the text editor.
      
      BUG: 362189
      076b8bc1
    • Vlad Zahorodnii's avatar
      [effects/zoom] Implement focus tracking with QAccessibilityClient · c1ea0412
      Vlad Zahorodnii authored
      Currently, the focus tracking functionality in the zoom effect does not
      work because it relies on kaccessibleapp, which is dead. Luckily for us,
      there is a library called libqaccessibilityclient that provides a way
      to monitor focus changes.
      
      BUG: 421234
      c1ea0412
  2. 31 May, 2020 5 commits
    • Mikhail Zolotukhin's avatar
      Notify about decoration theme change · 7226e75b
      Mikhail Zolotukhin authored
      7226e75b
    • Script Kiddy's avatar
      SVN_SILENT made messages (.desktop file) - always resolve ours · 7230c953
      Script Kiddy authored
      In case of conflict in i18n, keep the version of the branch "ours"
      To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
      7230c953
    • Ismael Asensio's avatar
      Merge branch 'Plasma/5.19' · 379ce932
      Ismael Asensio authored
      379ce932
    • Ismael Asensio's avatar
      [kcm/kwinrules] Fix first item position on property list · 623ee101
      Ismael Asensio authored
      The first time the list in `Add properties` is shown, the position of the first
      delegate is miscalculated as (0, 0) and gets hidden behind the section header.
      It only repositions when the delegate is destroyed and re-created, for example, when
      setting and deleting a filter text. (https://bugs.kde.org/show_bug.cgi?id=422289)
      
      This works-around it by delaying the `overlayModel` filtering until the list is first
      shown, which makes the delegate position correctly.
      
      BUG: 421583
      FIXED-IN: 5.19
      623ee101
    • Ismael Asensio's avatar
      [kcm/kwinrules] Detect also window complete class · d725fc59
      Ismael Asensio authored
      Summary:
      When detecting the properties of a window, now it shows and lets the user select the window complete class.
      If this property is selected in the overlay, `Window class` takes the whole class value, and the option `Match window whole class` is set.
      
      This adds back a feature the old kcm was offering.
      
      BUG: 421542
      FIXED-IN: 5.20
      
      Test Plan:
      - `Detect window properties` and pick a firefox window
      - The property selector shows: `Window class: navigator` and `Whole window class: navigator firefox`
      - Selecting the latter set the properties as per summary
      
      {F8334118}
      
      Reviewers: ngraham, #kwin, #plasma, meven
      
      Reviewed By: ngraham, #kwin, #plasma, meven
      
      Subscribers: broulik, davidedmundson, meven, anthonyfieroni, zzag, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D29791
      d725fc59
  3. 29 May, 2020 10 commits
  4. 28 May, 2020 3 commits
  5. 27 May, 2020 2 commits
  6. 26 May, 2020 7 commits
    • Johnny Jazeix's avatar
      fix compilation, remove extra parenthesis · 00b28562
      Johnny Jazeix authored
      00b28562
    • Méven Car's avatar
      Wayland: avoid binding disabled outputs to surfaces · f0f465cc
      Méven Car authored
      We don't need to bind disabled outputs to surfaces that overlaps them.
      This prevents error down the line and warnings about ignoring surface.enter events with Qt.
      
      BUG: 419749
      f0f465cc
    • Méven Car's avatar
      Wayland: avoid binding disabled outputs to surfaces · 797ccca4
      Méven Car authored
      We don't need to bind disabled outputs to surfaces that overlaps them.
      This prevents error down the line and warnings about ignoring surface.enter events with Qt.
      
      BUG: 419749
      797ccca4
    • David Edmundson's avatar
      b267ea41
    • David Edmundson's avatar
      [xwl] Update to kwaylandserver changes · 1c2f23d3
      David Edmundson authored
      Summary:
      Change so we track track and set a DataSource instead of a DataDevice
      
      This means we have to reverse a connection:
      - we need to update Seat with our selection only when our selection is
      received by the DataDeviceInterface
      
      - we no longer need to track and watch a dataDevice for changes after
      the seat emits selectionChange
      
      Change so that we handle an AbstractDataSource. Meaning we can paste
      from clipboard managers.
      
      Testing done:
      There is an existing xwayland-selections_test
      This still passes.
      
      Copied from:
      wl-copy(wlr) to firefox (x)
      firefox to wl-paste
      firefox to kate (wayland)
      kate to firefox
      
      Reviewers: #kwin, zzag
      
      Reviewed By: #kwin, zzag
      
      Subscribers: cblack, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D29332
      1c2f23d3
    • David Edmundson's avatar
      Correctly align natural layout in present windows · e3044e61
      David Edmundson authored
      Summary:
      Present windows works as follows:
      
      - It moves all windows about until nothing is overlapping with any
      other window.
      - This doesn't resize anything so ultimately we end up with a new
      co-ordinate space that's bigger than the screen depending on the amount
      of overlap.
      
       - We then render this whole view transformed to the screen
      
      The rectangle "bounds" is in overviewpixels, with "scale" being the
      ratio to convert to screen pixels.
      
      When adjusting the new bounds there's an attempt to centre align things.
      As bounds is in "overviewpixels" we multiply references to the previous
      bounds by scale, and divide everything through at the end. bounds.x/y
      were missed.
      
      This is mostly unoticable except on massive super-ultra-wide monitors
      which will otherwise have a tendency to shift to the left.
      
      Test Plan:
      Kai created a whole new test framework for this code that copy pasted
      this algorithm then showed mock windows as rectangles
      
      Reviewers: #kwin, apol, broulik, zzag
      
      Reviewed By: #kwin, apol, broulik, zzag
      
      Subscribers: zzag, apol, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D29705
      e3044e61
    • David Edmundson's avatar
      963491cc
  7. 24 May, 2020 1 commit
  8. 23 May, 2020 1 commit
    • Noah Davis's avatar
      Change CommandAllKey to Meta · f474686a
      Noah Davis authored
      Summary: Alt + Left Click to move windows has a tendency to conflict with creative workflow apps. While Alt can be changed to Meta in KWin's settings, Alt + Left Click shortcuts often cannot be customized in apps. Rather than making every user who runs into this problem change their settings, we should change our default settings to improve KWin's default usability. The fact that Alt + Left Click to move windows is older does not matter. We are trying to use Meta for global/shell shortcuts anyway.
      
      BUG: 399375
      
      Test Plan: The relevant parts of the relevant tests pass. kwin-testInternalWindow fails, but for unrelated reasons that have something to do with XWayland.
      f474686a
  9. 22 May, 2020 2 commits
    • Nate Graham's avatar
      Position OSD a bit farther down · 85b9aea5
      Nate Graham authored
      Summary:
      A common user complains is that our OSDs--particularly the volume OSD--are too intrusive
      and get in the way of the screen content. For example when adjusting the volume while
      watching a full-screen video, the volume change OSD will typically appear right in the
      middle of an actor's face.
      
      D20569 was an attempt to use a horizontal OSD to alleviate this issue. It mostly worked,
      but IMO it was still positioned too high up.
      
      This patch moved the placement down a little bit to make the OSD appear even farther from
      the center of the screen to make it less likely to
      
      I tried not to move it down too far or else it would interfere with subtitles in videos.
      
      Test Plan:
      With D20569:
      
      {F8269172}
      {F8269164}
      {F8269163}
      
      Reviewers: #kwin, #vdg, broulik, ndavis, zzag
      
      Reviewed By: #kwin, #vdg, ndavis, zzag
      
      Subscribers: meven, ndavis, niccolove, baberts, davidedmundson, filipf, zzag, kori, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D29263
      85b9aea5
    • Ismael Asensio's avatar
      [kcm/kwinrules] Extend upper limit of position and size spinners · 91eee99f
      Ismael Asensio authored
      Currently, the spinners used to edit position and size rules have an upper
      limit of 4098, which may be not enough for wide/hdpi/mutiple screens.
      
      The property itself has no such limit in the `.kcfg` schema
      This is just an issue with the editor.
      
      BUG: 421892
      FIXED-IN: 5.19
      91eee99f
  10. 21 May, 2020 4 commits
    • Vlad Zahorodnii's avatar
      [decoration] Fix propagation of client size · 621b2e1c
      Vlad Zahorodnii authored
      Even though the frame geometry and the client geometry have a connection
      between themselves, it doesn't mean that the frame geometry will change
      if the client geometry has changed and vice versa. For example, it can be
      the case when the border size changes. The frame geometry won't change,
      but the client geometry will.
      
      In general, similar to the frameGeometryChanged signal, we need another
      signal that is emitted when the client geometry has been changed that
      can be used then in DecoratedClientImpl.
      
      Unfortunately, 5.19 release is around the corner and I would prefer not
      to do any geometry-related changes in order to avoid introducing new
      regressions.
      
      In order to fix the propagation of the client size to decorations, this
      change ports DecoratedClientImpl from frameGeometryChanged to a signal
      that is emitted whenever geometry of any kind has been changed.
      
      BUG: 419080
      FIXED-IN: 5.19.0
      621b2e1c
    • Bhushan Shah's avatar
      Merge branch 'Plasma/5.19' · 6caad6ee
      Bhushan Shah authored
      6caad6ee
    • Bhushan Shah's avatar
      [platforms/drm] show cursor only when it is enabled · b2df11bf
      Bhushan Shah authored
      In previous code we used to update/show cursor even when the pointer
      device was present, e.g mobile device. Guard it behind the cursor
      enabled check.
      
      BUG: 418977
      FIXED-IN: 5.19.0
      b2df11bf
    • Tiago Corrêa's avatar
      scripting: Provide methods to create and remove virtual desktops · 232984c1
      Tiago Corrêa authored
      Summary: There are methods to create and remove virtual desktops via dbus, but I think it would be convenient to provide these methods for KWin scripts as well.
      
      Reviewers: #kwin, zzag
      
      Reviewed By: #kwin, zzag
      
      Subscribers: zzag, kwin
      
      Tags: #kwin
      
      Differential Revision: https://phabricator.kde.org/D29786
      232984c1