1. 09 Dec, 2020 2 commits
  2. 03 Dec, 2020 2 commits
  3. 02 Dec, 2020 1 commit
    • David Edmundson's avatar
      [autotests] Fix mouse between screens · 5e350b0d
      David Edmundson authored
      There were multiple other cases of placing the mouse between screens at
      the start of tests. It seems to be all copy paste.
      
      Only maximise and pointerConstraints were failing before this, but we
      may as well fix all of them.
      5e350b0d
  4. 01 Dec, 2020 1 commit
    • David Edmundson's avatar
      [autotests] Fix autotests · d56d4370
      David Edmundson authored
      Since the active screen now follows the mouse, the position is
      important.
      
      Between two screens is an overly confusing place for it anyway.
      d56d4370
  5. 28 Nov, 2020 1 commit
  6. 27 Nov, 2020 2 commits
    • Vlad Zahorodnii's avatar
      Convert Night Color into a plugin · bdfb9462
      Vlad Zahorodnii authored
      Night Color adjusts the color temperature based on the current time in
      your location. It's not a generic color correction module per se.
      
      We need a central component that can be used by both night color and
      colord integration to tweak gamma ramps and which will be able to
      resolve conflicts between the two. The Night Color manager cannot be
      such a thing because of its very specific usecase.
      
      This change converts Night Color into a plugin to prepare some space for
      such a component.
      
      The tricky part is that the dbus api of Night Color has "ColorCorrect"
      in its name. I'm afraid we cannot do that much about it without breaking
      API compatibility.
      bdfb9462
    • Vlad Zahorodnii's avatar
      Drop AbstractClient::isInitialPositionSet() · a3cf1b92
      Vlad Zahorodnii authored
      It's the same as AbstractClient::isPlaceable(), which is a more generic
      flag to indicate if the window can be placed.
      a3cf1b92
  7. 26 Nov, 2020 2 commits
    • Vlad Zahorodnii's avatar
      Explicitly destroy plugins · 3a7bce69
      Vlad Zahorodnii authored
      A plugin may need to access kwinApp() or kwinApp()->platform() during
      tear down, but the problem is that plugins are destroyed after the
      kwinApp() object. The plugin manager must be destroyed explicitly while
      the application is still valid to ensure that no crash will occur
      during compositor teardown.
      3a7bce69
    • Aleix Pol Gonzalez's avatar
      xdgshellclient: Support set_fullscreen argument · 91064cb2
      Aleix Pol Gonzalez authored
      xdgshell allows clients to specify which output should we fill on
      set_fullscreen. This change takes this request into consideration
      instead of ignoring it.
      91064cb2
  8. 24 Nov, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Introduce infrastructure for compositor extensions · c766e5da
      Vlad Zahorodnii authored
      The scripting api is not suitable for implementing all features that
      should not be implemented in libkwin. For example, the krunner
      integration or screencasting are the things that don't belong to be
      compiled right into kwin and yet we don't have any other choice.
      
      This change introduces a quick and dirty plugin infrastructure that
      can be used to implement things such as colord integration, krunner
      integration, etc.
      c766e5da
  9. 23 Nov, 2020 4 commits
  10. 22 Nov, 2020 2 commits
    • David Edmundson's avatar
      [autotests] Fix decoration input test · 30f9e2a5
      David Edmundson authored
      QTRY_COMPARE doesn't work well with how we do our wayland event
      dispatching.
      
      We know the client hasn't processed any events yet, so we can safely do
      a normal wait.
      30f9e2a5
    • David Edmundson's avatar
      Bundle QPA plugin directly · 5e60e64a
      David Edmundson authored
      On wayland, we know we're always going to load our internal QPA. Instead
      of shipping a plugin and loading it dynamically we can use Qt static
      plugins.
      
      This should result in slightly faster load times, but also reduce the
      number of moving pieces for kwin.
      
      This also prevents anyone outside kwin loading our QPA which wouldn't
      have made any sense and just crashed.
      5e60e64a
  11. 19 Nov, 2020 1 commit
  12. 11 Nov, 2020 1 commit
  13. 10 Nov, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Drop Toplevel::windowId() · e398a7cd
      Vlad Zahorodnii authored
      A window id generated by WaylandServer may reference an X11 window
      with the same id, which can result in undefined behavior.
      
      The main reason why we needed windowId() was because of the task
      switcher. However, since tabbox uses internal ids now, the window id
      property can be dropped.
      e398a7cd
  14. 20 Oct, 2020 1 commit
    • Andrey Butirsky's avatar
      fix KeyboardLayoutTest · f30ad51b
      Andrey Butirsky authored
      FAIL!  : KeyboardLayoutTest::testChangeLayoutThroughDBus() '!layoutChangedSpy.wait(1000)' returned FALSE. ()
         Loc: [/home/bam/kde/src/kwin/autotests/integration/keyboard_layout_test.cpp(250)]
      f30ad51b
  15. 17 Oct, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Adapt to input region changes in kwayland-server · 41d431de
      Vlad Zahorodnii authored
      SurfaceInterface::inputIsInfinite() has been dropped. If the surface has
      no any input region specified, SurfaceInterface::input() will return a
      region that corresponds to the rect of the surface (0, 0, width, height).
      
      While the new design is more robust, for example it's no longer possible
      to forget to check SurfaceInterface::inputIsInfinite(), it has shown some
      issues in the input stack of kwin.
      
      Currently, acceptsInput() will return false if you attempt to click the
      server-side decoration for a surface whose input region is not empty.
      
      Therefore, it's possible for an application to set an input region with
      a width and a height of 1. If user doesn't know about KSysGuard or the
      possibility of closing apps via the task manager, they won't be able to
      close such an application.
      
      Another issue is that if an application has specified an empty input
      region on purpose, user will be still able click it. With the new
      behavior of SurfaceInterface::input(), this is n...
      41d431de
  16. 15 Oct, 2020 1 commit
    • Vlad Zahorodnii's avatar
      wayland: Fix Qt clients not being maximized initially · a195223a
      Vlad Zahorodnii authored
      Currently, Qt clients send two maximize requests separated by the
      initial commit. From spec's perspective, this is totally fine, the
      client should receive two configure events with "maximized" state.
      
      But because changeMaximize() in XdgToplevelClient and setMaximized()
      operate on two different maximize modes, the second maximize request
      will trick kwin into thinking that the client should be restored.
      a195223a
  17. 14 Oct, 2020 1 commit
    • Vlad Zahorodnii's avatar
      xwayland: Avoid creating a tree query on crash · 2093820a
      Vlad Zahorodnii authored
      If Xwayland has crashed, the Workspace will block stacking order updates
      and start destroying all X11 clients.
      
      Once stacking order updates are unblocked, the Workspace will mark the X
      stacking order as dirty and create a new Xcb::Tree object.
      
      We don't want to create that Xcb::Tree object because accessing it
      after the XCB connection has been shut down will lead to a crash.
      
      BUG: 427688
      FIXED-IN: 5.20.1
      2093820a
  18. 30 Sep, 2020 2 commits
  19. 29 Sep, 2020 2 commits
    • Bhushan Shah's avatar
      virtualkeyboard: rename class to InputMethod · 222b558b
      Bhushan Shah authored
      VirtualKeyboard class does not implement the relevant VirtualKeyboard
      protocol but rather implements the InputMethod protcol and can in theory
      be used by other input method like e.g. ibus.
      
      Make class name consistent with what it does to avoid confusion in
      future.
      
      For now only rename of main class is done and dbus service is kept as-is
      to provide retro-compatibility, when input method protocol is
      implemented fully, we can think of what to do wrt the dbus interface
      later when we fully implement zwp_input_method_unstable_v1 protocol.
      222b558b
    • Bhushan Shah's avatar
      virtualkeyboard: add text-input-v3 support · 6d433bdf
      Bhushan Shah authored
      6d433bdf
  20. 24 Sep, 2020 2 commits
    • Andreas Haratzis's avatar
      Fix for PlasmaSurfaceTest broken in a3b50500 · 6f53f627
      Andreas Haratzis authored
      TestPanelWindowsCanCover now needs to wait for the event queue to process the hover event.
      6f53f627
    • Vlad Zahorodnii's avatar
      Replace remaining usages of old connect syntax with new connect syntax · 0c266e76
      Vlad Zahorodnii authored
      This change replaces the remaining usages of the old connect syntax with
      the new connect syntax.
      
      Unfortunately, there are still places where we have to use SIGNAL() and
      SLOT() macros, for example the stuff that deals with d-bus business.
      
      Clazy was used to create this change. There were a few cases that needed
      manual intervention, the majority of those cases were about resolving
      ambiguity caused by overloaded signals.
      0c266e76
  21. 10 Sep, 2020 2 commits
  22. 09 Sep, 2020 4 commits
  23. 08 Sep, 2020 1 commit
    • David Edmundson's avatar
      Avoid QPointer in return types of Input methods · 6acf35e4
      David Edmundson authored
      QPointer is a really useful way to store a pointer over time.
      It doesn't make have any value as a return value used by a short-lived
      method.
      
      There isn't a good copy constructor, it's effectively the same as
      creating a new QWeakPointer reference that has to be cleaned up.
      
      Testing if something is null is still the same. A new QPointer can be
      made by the caller if it actually is needed.
      
      Input handling is a very hot path called many times a frame, so it's
      important to keep this light. focus() and at() are called a lot which
      added up to slightly over 1% of CPU time when moving the mouse about.
      6acf35e4
  24. 03 Sep, 2020 1 commit
    • Vlad Zahorodnii's avatar
      Implement the layer-shell v1 protocol · d3cca65d
      Vlad Zahorodnii authored
      The layer-shell protocol allows wayland clients to create surfaces that
      can be used for building desktop environment components such as panels,
      notifications, etc.
      
      The support for the plasma-shell protocol will be dropped once plasma in
      all its entirety is ported to the layer-shell protocol.
      d3cca65d
  25. 02 Sep, 2020 1 commit