1. 13 Sep, 2022 1 commit
    • Marco Martin's avatar
      Reset the count while the user keeps moving the mouse · 9965ca7f
      Marco Martin authored and Nate Graham's avatar Nate Graham committed
      re-trigger the edge *only* if the user keeps the mouse still for at
      least edges()->reActivationThreshold() - edges()->timeThreshold()
      so that the user has to actually keep moving.
      if the user keeps moving the cursor in the direction of the edge, it
      wion't continuously retrigger it
  2. 11 Sep, 2022 6 commits
  3. 06 Sep, 2022 1 commit
    • Vlad Zahorodnii's avatar
      Move multi-purpose code in its own directory · d2fb4147
      Vlad Zahorodnii authored
      Things such as Output, InputDevice and so on are made to be
      multi-purpose. In order to make this separation more clear, this change
      moves that code in the core directory. Some things still link to the
      abstraction level above (kwin), they can be tackled in future refactors.
      Ideally code in core/ should depend either on other code in core/ or
      system libs.
  4. 02 Aug, 2022 1 commit
  5. 21 Jul, 2022 1 commit
    • Vlad Zahorodnii's avatar
      Make Workspace track managed outputs · 4bfb0acc
      Vlad Zahorodnii authored
      This change adjusts the window management abstractions in kwin for the
      drm backend providing more than just "desktop" outputs.
      Besides that, it has other potential benefits - for example, the
      Workspace could start managing allocation of the placeholder output by
      itself, thus leading to some simplifications in the drm backend. Another
      is that it lets us move wayland code from the drm backend.
  6. 14 Jul, 2022 1 commit
    • David Edmundson's avatar
      Use floating geometry throughout · 7292af3d
      David Edmundson authored
      With fractional scaling integer based logical geometry may not match
      device pixels. Once we have a floating point base we can fix that. This
      also is
      important for our X11 scale override, with a scale of 2 we could
      get logical sizes with halves.
      We already have all input being floating point, this doubles down on it
      for all remaining geometry.
      - Outputs remain integer to ensure that any screen on the right remains
       - Placement also remains integer based for now.
      - Repainting is untouched as we always expand outwards
       - Decoration is untouched for now
       - Rules are integer in the config, but floating in the adjusting/API
      This should also be fine.
      At some point we'll add a method to snap to the device pixel
      grid. Effectively `round(value * dpr)  / dpr` though right now things
      mostly work.
      This also gets rid of a lot of hacks for QRect right and bottom which
      are very
      Parts to watch out in the port are:
       QRectF::contains now includes edges
      QRectF::right and bottom are now sane so previous hacks have to be
       QRectF(QPoint, QPoint) behaves differently for the same reason
       QRectF::center too
      In test results some adjusted values which are the result of
      QRect.center because using QRectF's center should behave the same to the
  7. 13 Jun, 2022 1 commit
  8. 04 Jun, 2022 1 commit
    • Xaver Hugl's avatar
      port many Qt shared pointers to standard smart pointers · 48740664
      Xaver Hugl authored
      There are a few benefits to using smart pointers from the standard library:
      - std::unique_ptr has move semantics. With move semantics, transfer of ownership
      can be properly expressed
      - std::shared_ptr is more efficient than QSharedPointer
      - more developers are used to them, making contributions for newcomers easier
      We're also already using a mix of both; because Qt shared pointers provide
      no benefits, porting to standard smart pointers improves consistency in
      the code base. Because of that, this commit ports most of the uses of QSharedPointer
      to std::shared_ptr, and some uses of QScopedPointer to std::unique_ptr
  9. 25 May, 2022 1 commit
  10. 24 May, 2022 1 commit
  11. 11 May, 2022 1 commit
    • Aleix Pol Gonzalez's avatar
      Inhibit edges when the active window is full screen by default · 946087ef
      Aleix Pol Gonzalez authored
      At the moment we trigger the edges even when the active window is full
      screen which is unfortunate when running certain games, for example when
      you're attacking the village at the north-east in Age of Empires and you
      have the Overview effect on.
      This changes the default to inhibit them (like we used to just do for
      sides but not corners for some reason) and adds a checkbox to restore
      them even in that case.
      BUG: 441464
  12. 10 May, 2022 1 commit
  13. 03 May, 2022 1 commit
    • Marco Martin's avatar
      Realtime screen edges gestures for scripted effects · 4cb3ab09
      Marco Martin authored
      Possibility to implement realtime screenedges gestures in scripted effects,
      implement it in the windowsaperture show desktop effect.
      * Expose registerRealtimeScreenEdge to JavaScript, the callback will be
      a JS function.
      * Add the concept of freezeInTime() in the animation js bindings,
      it will either create an animation frozen at a given time or freeze a running animation
      that can be restored and ran to completition at any time
      * add an edges property only for showdesktop as it's not directly on the effect configuration
  14. 25 Apr, 2022 1 commit
  15. 23 Apr, 2022 1 commit
  16. 22 Apr, 2022 1 commit
  17. 15 Apr, 2022 1 commit
    • Vlad Zahorodnii's avatar
      Rename AbstractOutput to Output · 8e7a8c5a
      Vlad Zahorodnii authored
      AbstractOutput is not so Abstract and it's common to avoid the word
      "Abstract" in class names as it doesn't contribute any new information.
      It also significantly reduces the line width in some places.
  18. 28 Mar, 2022 1 commit
  19. 25 Mar, 2022 1 commit
    • Vlad Zahorodnii's avatar
      Run clang-format · 7096e3ea
      Vlad Zahorodnii authored
      The .clang-format file is based on the one in ECM except the following
      style options:
       - AlwaysBreakBeforeMultilineStrings
       - BinPackArguments
       - BinPackParameters
       - ColumnLimit
       - BreakBeforeBraces
       - KeepEmptyLinesAtTheStartOfBlocks
  20. 22 Mar, 2022 1 commit
  21. 15 Mar, 2022 1 commit
  22. 28 Feb, 2022 1 commit
    • Alex Richardson's avatar
      Use #cmakedefine01 for all KWIN_BUILD_* macros · d789ecc6
      Alex Richardson authored
      This ensures that we get a warning if the config header is not included
      instead of compiling the code as if it was disabled. Interestingly, some
      checks already used #if KWIN_BUILD_*, so those were generating -Wundef
      warnings when the feature is disabled. Commit 886173ca assumed that all
      those features were already 01, so this unbreaks the build if any of the
      features is disabled.
      Fixes: 886173ca ("Reduce ifdefs in Workspace::supportInformation()")
  23. 23 Feb, 2022 1 commit
  24. 25 Jan, 2022 1 commit
  25. 08 Dec, 2021 1 commit
  26. 06 Oct, 2021 1 commit
  27. 20 Sep, 2021 1 commit
  28. 31 Aug, 2021 2 commits
  29. 30 Aug, 2021 2 commits
  30. 16 Aug, 2021 1 commit
    • Vlad Zahorodnii's avatar
      Make WindowRules::checkDesktop take a list of desktops · 7f04d730
      Vlad Zahorodnii authored
      This ports relevant apis in WindowRules to the VirtualDesktop class.
      If the client has no desktop rule, the desktop list that has been passed
      to the checkDesktops() function will be returned.
      If the client has a desktop window rule, the checkDesktop() function
      will return a list with a single VirtualDesktop object or none if the
      window is forced to be on all virtual desktops.
  31. 08 Jun, 2021 1 commit
  32. 16 May, 2021 1 commit
  33. 10 Feb, 2021 1 commit
    • Vlad Zahorodnii's avatar
      Move source code to src/ directory · 93e0265e
      Vlad Zahorodnii authored
      Once in a while, we receive complaints from other fellow KDE developers
      about the file organization of kwin. This change addresses some of those
      complaints by moving all of source code in a separate directory, src/,
      thus making the project structure more traditional. Things such as tests
      are kept in their own toplevel directories.
      This change may wreak havoc on merge requests that add new files to kwin,
      but if a patch modifies an already existing file, git should be smart
      enough to figure out that the file has been relocated.
      We may potentially split the src/ directory further to make navigating
      the source code easier, but hopefully this is good enough already.