1. 09 Dec, 2020 2 commits
  2. 03 Dec, 2020 2 commits
  3. 02 Dec, 2020 2 commits
  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. 17 Nov, 2020 1 commit
  13. 11 Nov, 2020 1 commit
  14. 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
  15. 23 Oct, 2020 1 commit
  16. 20 Oct, 2020 2 commits
    • 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
    • Vlad Zahorodnii's avatar
      Use bilinear interpolation to compute texture coords of subquads · 7301564e
      Vlad Zahorodnii authored
      On Wayland, a surface must be displayed the same way no matter how the
      attached buffer is transformed. In order to guarantee that, we build the
      surface-to-buffer matrix, which is used to compute the texture coords.
      
      The surface-to-buffer matrix represents an affine transformation. Thus,
      performing linear interpolation between texture coordinates won't end up
      in corrupted rendered results. This is the main assumption that we make
      during generation of contents window quads. After creating a sub-quad,
      the new quad's texture coordinates are computed by interpolating between
      the source quad's texture coords.
      
      However, WindowQuad::makeSubQuad() makes a concrete assumption about the
      order of texture coords, which might be false if the attached wayland
      buffer is rotated 90 or 270 degrees.
      
      This issue went unnoticed after merging the viewporter patches because
      the developer who was working on it had been using primarily nested
      kwin_wayland for testing purposes. And it appears like kwin schedules
      full screen repaints even though it supports buffer age. It still needs
      some investigation why that happens.
      
      BUG: 428003
      7301564e
  17. 19 Oct, 2020 1 commit
  18. 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
  19. 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
  20. 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
  21. 30 Sep, 2020 2 commits
  22. 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
  23. 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
  24. 10 Sep, 2020 3 commits
  25. 09 Sep, 2020 1 commit