Commit graph

16832 commits

Author SHA1 Message Date
David Edmundson
3dc22d7d88 [platforms/hwcomposer] Add scaling support
Summary:
Despite plasma frameworks doing it's own scaling with fonts, it's been
requested to use kwin/wayland scaling.

Like DRM, when kscreen is not used, scale value is loaded from a config
file.

Config format is
[HWComposerOutputs][0]
Scale=N

The 0 is to map similarly to DRM and support multi-screen, but with a
screen index
rather than a UUID based on EDID.

Because we don't support multi screen this is always 0 for now.

Test Plan: Ran with the config value unset and with the config value at
Scale=3.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: bshah, romangg, nicolasfella, zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18810
2019-02-22 00:47:08 +00:00
Roman Gilg
d6f98d1ecc Reload Shm texture when buffer size changes
Summary: Shm textures via Gl must be reloaded in case their size changes.

Test Plan: testShmBufferSizeChangeOnSubSurface passes.

Reviewers: #kwin, graesslin

Reviewed By: #kwin, graesslin

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18453
2019-02-21 23:45:55 +01:00
Roman Gilg
d0422eb79f Remove unnecessary flushs in new buffer size change test 2019-02-21 23:42:47 +01:00
Roman Gilg
06f64d5e56 [autotests] Sub-surface resize test
Summary:
Adds an autotest to show that KWin fails an assertion when a client tries to
resize a sub-surface.

Since it is the first autotest dealing with sub-surfaces explicitly additional
autotest helpers are introduced to allow that.

We also add a new signal in Compositor to spy on to know when the buffer swap
has been completed.

Test Plan:
Test fails as expected:
```
QFATAL : KWin::BufferSizeChangeTest::testShmBufferSizeChangeOnSubSurface() ASSERT: "image.size() == m_size" in file /home/roman/dev/kde/src/kde/workspace/kwin/platformsupport/scenes/opengl/abstract_egl_backend.cpp, line 394
FAIL!  : KWin::BufferSizeChangeTest::testShmBufferSizeChangeOnSubSurface() Received a fatal error.
   Loc: [Unknown file(0)]
Totals: 4 passed, 1 failed, 0 skipped, 0 blacklisted, 367ms
********* Finished testing of KWin::BufferSizeChangeTest *********
```

Reviewers: #kwin, zzag

Subscribers: zzag, graesslin, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18452
2019-02-21 23:33:32 +01:00
Roman Gilg
1e6f6700f8 [platform/virtual] Swap buffers in EGL GBM backend
Summary:
The virtual platform did not actually present content and spin the
compositor. Let's do this from now on , first for the EGL GBM backend.

Test Plan: All tests pass according to Vlad

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: graesslin, zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18436
2019-02-21 23:30:11 +01:00
Martin Flöser
9b922f8833 Split out a dedicated InternalClient class
Summary:
Most of the functionality which is special to internal clients is moved
from ShellClient to InternalClient. As KWin's qpa is still bound to the
Wayland protocol InternalClient inherits from ShellClient. Due to that
some aspects in ShellClient are "weird". ShellClient still detects
whether it's an internal client and uses the variable m_internal to
capture the state. This is required as we cannot use the isInternal
method. Most of m_internal usage is in init which is called from
constructor of ShellClient. Thus it's not possible to call into virtual
methods of InternalClient.

Also some of the code is duplicated and some methods are temporarily
marked as virtual.

The next step will be to remove ShmBuffer for internal windows which
should decouple the two implementations further with the long term goal
of having InternalClient inherit AbstractClient directly.

Test Plan:
Run nested KWin, triggered outline (OpenGL case) and debug console (shm case).
InternalWindow unit test still passes.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18569
2019-02-21 18:51:25 +01:00
l10n daemon script
66faa480d4 SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2019-02-21 06:35:42 +01:00
David Edmundson
062dfefafe [platforms/hwcomposer] Port to AbstractOutput
Summary:
This gives us XdgOutput support a requirement now that wayland server
reports that we support it and Qt5.12 then expects it to be sent.

It also provides an easy starting point for supporting wayland scaling
and a slight step towards multi-output.

Test Plan:
Ran on phone. Got output. Turning screen on and off works.
The double tap doesn't work great, but that was true before
(via bshah's hack to build on the current state)

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: romangg, nicolasfella, zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18808
2019-02-20 13:20:02 +00:00
David Edmundson
3cdea2f77c [wayland] Fix typo in method name
Test Plan: Compile + grep

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D19177
2019-02-20 13:19:24 +00:00
Vlad Zagorodniy
50041fd5f9 Merge branch 'Plasma/5.15' 2019-02-20 15:11:48 +02:00
Vlad Zagorodniy
9a68cbd9b1 Don't destroy DecorationRenderer in setup/finish compositing
Summary:
Currently, KWin/Wayland crashes when the compositor is reinitialized.
The reason for that is ShellClient's DecorationRenderer gets destroyed
when the scene is already gone, thus there is no current OpenGL context.
Client works around that issue by destroying scene-specific DecorationRender
in finishCompositing. Such a workaround could be applied to ShellClient
as well, but it would make code more confusing because DecoratedClientImpl
also tries to destroy DecorationRenderer.

A better approach would be to notify DecoratedClientImpl that
compositing is about to be finished, so it can destroy the decoration
renderer when the scene is still alive. This not only fixes the
previously mentioned issue in ShellClient, but also makes code a little
bit tidier.

Test Plan:
Start Plasma on Wayland session, change any compositor settings (e.g.
animation speed).

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18921
2019-02-20 15:09:37 +02:00
Roman Gilg
4c18d156e2 [xwl] Support stack optimizing X drag source clients
Summary:
Some X clients acting as drag sources might try to optimize finding the current
target window by checking if a window manager, that sets the root window
_NET_CLIENT_LIST_STACKING property, is present. An example for this is Chromium
and since KWin sets the property the drag proxy windows must be added to this
list. Otherwise the origin client will not detect the proxy window and not send
an XdndEnter message.

Test Plan: Manually with Chromium.

Reviewers: #kwin

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15628
2019-02-19 13:24:18 +01:00
Roman Gilg
522d2935e6 [xwl] text/x-uri converter for selected X url list format targets
Summary:
On X several target atoms are established to provide data similar to the
text/uri-list target format (the respective MIME on Wayland is called
text/x-uri).

Firefox can send link data in the NETSCAPE_URL format ones. Chromium on the
other side sends link data in the text/x-moz-url format, which transports
UTF-16 text.

For both these peculiarities this patch provides converter functions, that
translate these formats into the Wayland native text/x-uri format. In the
other direction no translation is necessary. Both browsers supports the
text/uri-list format when receiving link lists.

Test Plan: Manually with Firefox and Chromium.

Reviewers: #kwin

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15629
2019-02-19 13:17:08 +01:00
Roman Gilg
548978bfe1 [xwl] Drag and drop between Xwayland and Wayland native clients
Summary:
Building upon the generic X Selection support this patch establishes another
selection class representing the XDND selection and provides interfaces
to communicate drags originating from Xwayland windows to the Wayland
server KWin and drags originating from Wayland native drags to Xwayland.

For Wayland native drags KWin will claim the XDND selection as owner and
will simply translate all relevant events to the XDND protocol and receive
alike messages by X clients.

When an X client claims the XDND selection KWin is notified via the X protocol
and it decides if it allows the X drag to transcend into the Wayland protocol.
If this is the case the mouse position is tracked and on entering a Wayland
native window a proxy X Window is mapped to the top of the window stack. This
proxy window acts as a drag destination for the drag origin window and again
X messages will be translated into respective Wayland protocol calls. If the
cursor leaves the Wayland window geometry before a drop is registered, the
proxy window is unmapped, what triggers a subsequent drag leave event.

In both directions the necessary core integration is minimal. There is a single
call to be done in the drag and drop event filter through the Xwayland
interface class.

From my tests this patch facilitates drags between any Qt/KDE apps. What needs
extra care are the browsers, which use target formats, that are not directly
compatible with the Wayland protocol's MIME representation. For Chromium an
additional integration step must be done in order to provide it with a net
window stack containing the proxy window.

Test Plan: Manually. Auto tests planned.

Reviewers: #kwin

Subscribers: zzag, kwin, alexde

Tags: #kwin

Maniphest Tasks: T4611

Differential Revision: https://phabricator.kde.org/D15627
2019-02-19 13:09:18 +01:00
Roman Gilg
ad1bcbecc7 [xwl] Add Xwayland interface class
Summary: Adds an interface class to access Xwayland members from within KWin core.

Reviewers: #kwin, davidedmundson, zzag

Subscribers: zzag, davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15419
2019-02-19 12:59:11 +01:00
Roman Gilg
2776f829ef Remove X clipboard sync helper and rename its autotest
Summary:
With the gneric X selections infrastructure and clipboard support the X
clipboard sync helper utility can be removed. Also rename its autotest as it
tests the inner workings of the new mechanism since this mechanism was
introduced.

Test Plan: Autotest still passes under new name.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: graesslin, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15063
2019-02-19 12:30:43 +01:00
Roman Gilg
6e08fb2fa5 [xwl] Generic X selections translation mechanism with Clipboard support
Summary:
In this patch an infrastructure is created to represent generic X selections
in a Wayland session and use them for data transfers between Xwayland windows
and Wayland native clients.

The central manager is the DataBridge class, in which Selection objects can be
created. This is hard-coded and such a Selection object persists until the end
of the session, so no arbitrary selections can be created on the fly. For now
the X Clipboard selection is supported, whose corresponding mechanism in the
Wayland protocol is just called Selection.

A Selection object listens for selection owner changes on the X side and for
similar events into the Wayland server interfaces. If a data provider is
available a selection source object is created by the Selection object. In case
data is requested on the other side, a data transfer is initialized by creating
a Transfer object. A Selection keeps track of all transfers and makes sure that
they are destroyed when they are finished or in case they idle because of
misbehaving clients.

The Clipboard class translates the X Clipboard via a proxy window. Selection
changes on the Wayland side are listened to through a new signal on the active
KWayland seat interface.

The previously used X clipboard syncer helper is disabled. The clipboard sync
autotest is changed to the new mechanism.

BUG: 394765
BUG: 395313

Test Plan: Manually and clipboard sync autotest.

Reviewers: #kwin

Subscribers: zzag, graesslin, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15061
2019-02-19 12:24:27 +01:00
Roman Gilg
608a89a85b [autotests] Use Xwayland class in WaylandTestApplication
Summary:
By using the new Xwayland class we can reduce code duplication.

An abstract parent class is introduced, that allows interfacing
with the Xwayland class from the test binaries.

Test Plan: Autotests still pass.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15022
2019-02-19 12:18:33 +01:00
Roman Gilg
050cf0451e [xwl] Move Xwayland parts into separate class
Summary:
The Xwayland code path is moved from ApplicationWayland to a dedicated class
Xwayland in a new top-level directory xwl.

This is a direct preparation step for generic support of Xwayland Selections.

On a longer timescale this should also allow us to further separate Wayland
native functionality from Xwayland to allow us at one point to build KWin's
Wayland binary optionally without X dependencies. Another long term goal, that
becomes possible through this separation is to recover from Xwayland crashes.

Test Plan: Manually and auto tests

Reviewers: #kwin, davidedmundson

Subscribers: davidedmundson, zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15020
2019-02-19 12:10:46 +01:00
Jonathan Riddell
0f514e94a5 Update version number for 5.15.1
GIT_SILENT
2019-02-19 10:27:25 +00:00
Vlad Zagorodniy
58de7d6862 Merge branch 'Plasma/5.15' 2019-02-18 16:27:45 +02:00
Vlad Zagorodniy
55d3f2933f [effects/desktopgrid] Don't copy windows on X11
Summary:
Currently, the Desktop Grid effect tries to copy a client when user
moves it. But on X11 such behavior doesn't make sense because
a client can't be on multiple desktops (except on all).

BUG: 404442
FIXED-IN: 5.15.1

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D19116
2019-02-18 16:27:13 +02:00
Martin Flöser
1d8d7bd9f7 [qpa] Set binary output path for QPA plugin
Summary: Required for kwin_wayland to find it's own plugin.

Test Plan: My kwin_wayland was crashing and gdb showed wrong plugin being loaded

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D19010
2019-02-17 20:09:23 +01:00
l10n daemon script
0015ff2ac6 SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2019-02-17 08:30:42 +01:00
l10n daemon script
71acd12eb2 SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2019-02-17 05:37:27 +01:00
Albert Astals Cid
76c5371b57 Link to AuthCore instead of Auth
Summary: it's a smaller library and provides everything we need

Test Plan: Compiles

Reviewers: apol

Reviewed By: apol

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D19061
2019-02-16 10:20:28 +01:00
l10n daemon script
66e7212a4b SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2019-02-16 05:46:17 +01:00
Vlad Zagorodniy
0d7415336f [effects] Make sure that all effects reset the streaming buffer
Summary:
The streaming buffer is shared so we have to reset it before rendering
something. Otherwise, it's basically undefined behavior.

For example, if the streaming buffer had been used for rendering a
geometry with some color, then the Background Contrast effect may crash
in GLVertexBuffer::bindArrays, it all depends on whether there is any
bounded GLShader. To fix that, the buffer has to be reset.

BUG: 356141

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D19034
2019-02-15 15:51:54 +02:00
l10n daemon script
b5b4cff18c SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2019-02-15 09:22:45 +01:00
l10n daemon script
6d9ac76cf7 SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2019-02-15 05:42:11 +01:00
Nate Graham
c55568fd80 [kcmkwin/decorations] Use correct header text
Summary: The header text is supposed to be the KCM's name, not a duplicate of the tooltip text.

Test Plan: {F6615111, size=full}

Reviewers: #vdg, GB_2

Reviewed By: #vdg, GB_2

Subscribers: kwin

Tags: #kwin

Maniphest Tasks: T10273

Differential Revision: https://phabricator.kde.org/D19018
2019-02-14 10:33:54 -07:00
Jan Grulich
b4a8977b3a Add support for fake pointer move with absolute coordinates
Summary: This is needed for remote desktop support. It also depends on D18114.

Reviewers: davidedmundson

Reviewed By: davidedmundson

Subscribers: graesslin, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18115
2019-02-14 13:47:36 +01:00
Vlad Zagorodniy
d167935157 Add addToplevel and removeToplevel to Scene
Summary:
Code that destroys all scene windows when finishing compositing is not
readable. E.g. can you tell what this piece of code is doing without
looking into the source code of Scene::windowClosed?

    foreach (Client * c, Workspace::self()->clientList())
        m_scene->windowClosed(c, NULL);

This change intoduces removeToplevel(as well its counterpart) method to
the Scene class. The name of the new method much better describes what
we're doing.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18210
2019-02-14 14:43:11 +02:00
Vlad Zagorodniy
96a02c7560 [effects/logout] Hide configure button in Desktop Effects KCM
Summary:
The configure button should be hidden because this effect doesn't
have any kcms.

Reviewers: #kwin, ngraham

Reviewed By: ngraham

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18984
2019-02-14 13:45:30 +02:00
l10n daemon script
87917677d6 SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2019-02-14 05:43:32 +01:00
Bhushan Shah
051539606c [kcmkwin/kwindesktop] show only on desktop
Summary: It makes very less sense to show on the the mobile devices

Reviewers: davidedmundson

Reviewed By: davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18978
2019-02-13 17:07:04 +05:30
l10n daemon script
beb35d8b8f SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2019-02-13 05:59:41 +01:00
Vlad Zagorodniy
7b20e1f66f Overhaul doxygen comments
Summary:
We have a mix of different doxygen comment styles, e.g.

    /*!
      Foo bar.
     */

    /**
     * Foo bar.
     */

    /** Foo bar.
     */

    /**
     * Foo bar.
     */

    /**
     * Foo bar.
     **/

To make the code more consistent, this change updates the style of all
doxygen comments to the last one.

Test Plan: Compiles.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18683
2019-02-12 19:29:33 +02:00
Valerio Pilo
31dcf51c88 [kcmkwin/kwindecoration] Fix Get Hot New Stuff
Summary:
Found better categories for GHNS v3: looks like only Aurorae is supported?

Also refresh the themes when you close the GHNS window, in case something was downloaded.

Test Plan: Open GHNS, download new theme, close GHNS -> new theme visible

Reviewers: leinir, graesslin, #kwin, davidedmundson

Reviewed By: leinir, #kwin, davidedmundson

Subscribers: ngraham, cfeck, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18935
2019-02-12 16:21:11 +01:00
David Edmundson
5fa18646b6 [autotests] Fix typo in autotest name 2019-02-12 12:38:35 +00:00
Volker Krause
d920b323bd Follow ECM documentation style
Summary: In preparation for upstreaming to ECM, as qtbase needs this as well.

Reviewers: apol

Reviewed By: apol

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18944
2019-02-12 11:56:21 +01:00
David Faure
1b316b6b69 Merge branch 'Plasma/5.15' 2019-02-12 08:56:17 +01:00
David Faure
48971e0848 Enable -DQT_NO_URL_CAST_FROM_STRING and fix compilation 2019-02-12 08:54:53 +01:00
l10n daemon script
3e09342c5e SVN_SILENT made messages (.desktop file) - always resolve ours
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"
2019-02-12 05:48:29 +01:00
Victor Ruzhykh
0cf7cca2ab Make the new Window Decoration KCM translatable
Differential Revision: https://phabricator.kde.org/D18931
2019-02-11 20:12:41 +02:00
Vlad Zagorodniy
5047449a55 [platforms/drm] Use more ScopedDrmPointer
Test Plan: Standalone KWin/Wayland still works.

Reviewers: #kwin, graesslin

Reviewed By: #kwin, graesslin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18863
2019-02-10 20:26:02 +02:00
Vlad Zagorodniy
6006dab41c Use correct flag when checking whether a scene window is opaque
Summary:
Given that allclips contains opaque regions of higher windows, we should
check PAINT_WINDOW_TRANSLUCENT flag instead of PAINT_WINDOW_TRANSFORMED.

ba39d1f917 introduced that check. Neither
the commit message nor the associated review have any comments regarding
checking PAINT_WINDOW_TRANSFORMED, so given the following comment

    // Here we rely on WindowPrePaintData::setTranslucent() to remove
    // the clip if needed.

PAINT_WINDOW_TRANSFORMED is most likely a typo.

Reviewers: #kwin, graesslin

Reviewed By: #kwin, graesslin

Subscribers: graesslin, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18236
2019-02-10 20:05:45 +02:00
Vlad Zagorodniy
22cdf08956 Merge branch 'Plasma/5.15' 2019-02-10 20:01:59 +02:00
Vlad Zagorodniy
381d0df7f9 Copy layer repaints to Deleted
Summary:
If a Toplevel has scheduled layer repaints, then we have to copy them
to Deleted as well. This can happen, for example, when a client loses
shadow right before it gets closed or unmapped.

Reviewers: #kwin, graesslin

Reviewed By: #kwin, graesslin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18786
2019-02-10 20:01:40 +02:00
Valerio Pilo
8350c0f2ce [kcmkwin/kwindecoration] Rewrite the KWin decorations settings as a ConfigModule
Summary:
* Wrote new KCM based on KQuickAddons::ConfigModule.
* Remade QMLs for Buttons and Themes tabs.
* Updated bridge model code for new plugin lookup API (fixes warnings).
* Fixed decoration shadow changing messing with the previews sizes.
* Fixed button drag and drop issues (see D18104).
* Fixed default settings button behavior and detection of settings changes.
* Updated Get Hot New Stuff.
* Removed apply button in previewbridge.cpp: After applying changes, a theme's KCModule is invalidated.

BUG: 389431
BUG: 350122
BUG: 346222
BUG: 342816
BUG: 397595

{F6574963} | {F6574962} | {F6574961} | {F6574960}

Test Plan:
* Verified saving and loading for every setting
* Checked shadows of Breeze and Oxygen
* Tested all possible drag&drop operations on both sides of the fake titlebar
* Changed color schemes (with `kcmshell5 colors`) while showing the Themes tab to see if all previews update correctly their palettes
* Tested on a fresh Neon-developer account, via kcmshell and systemsettings

Reviewers: #vdg, abetts, ngraham, #kwin, davidedmundson

Reviewed By: #vdg, #kwin, davidedmundson

Subscribers: zzag, GB_2, ngraham, broulik, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18458
2019-02-10 13:01:04 +01:00