Commit graph

16886 commits

Author SHA1 Message Date
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
Vlad Zagorodniy
698b40dbbd [kcmkwin/compositing] Delete unused config headers
Test Plan: Compiles.

Reviewers: #kwin, davidedmundson, ngraham

Reviewed By: #kwin, davidedmundson, ngraham

Subscribers: ngraham, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18850
2019-02-08 17:27:25 +02:00
Vlad Zagorodniy
be8729105f Move lanczos filter away from KWin core
Summary:
Lanczos filter shouldn't be in KWin core because it's quite specific about
rendering backend.

Test Plan: Windows in the desktop grid look normal.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: mart, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18774
2019-02-07 18:03:34 +02:00
Jonathan Riddell
5a750c3667 Update version number for 5.15.0
GIT_SILENT
2019-02-07 11:01:16 +00:00
Vlad Zagorodniy
16a2799b3a Merge branch 'Plasma/5.15' 2019-02-07 02:11:14 +02:00
Vlad Zagorodniy
bdddf4daf2 [effects/screenedge] Use correct blend function
Summary:
Glow textures already have the red, green, and blue channels
premultiplied by the alpha component (because of QImage), thus we can't
use GL_SRC_ALPHA for sfactor in glBlendFunc.

BUG: 403570

Test Plan:
Before:
{F6592391}

After:
{F6592392}

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18803
2019-02-07 02:10:57 +02:00
Vlad Zagorodniy
261e3a768a Make whitespace in Deleted consistent 2019-02-06 19:16:18 +02:00
Vlad Zagorodniy
e81bbfb086 Remove unused field in Deleted
We don't need window_opacity because 92d06a8c4b
introduced m_opacity a while ago.
2019-02-06 19:15:49 +02:00
l10n daemon script
54e46dbd9f 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-06 08:36:52 +01:00
l10n daemon script
d0fc39cbf0 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-06 05:46:34 +01:00
Vlad Zagorodniy
6481607565 Remove ExtraDesktop.sh
Summary: data/fsp_workarounds_1.kwinrules had been removed a while ago.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18775
2019-02-06 01:33:11 +02:00
Vlad Zagorodniy
b06c1ea5a4 Move icons to data dir
Summary: We don't need them in the toplevel directory.

Test Plan: Compiles.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18771
2019-02-06 01:19:54 +02:00
Vlad Zagorodniy
b40c702c76 Drop COPYING.DOC
Summary: KWin is licensed under GPLv2.

Reviewers: #kwin, graesslin

Reviewed By: #kwin, graesslin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18657
2019-02-05 23:41:57 +02:00
Vlad Zagorodniy
920831bb8e Merge branch 'Plasma/5.15' 2019-02-05 14:32:41 +02:00
Vlad Zagorodniy
c372585623 Fix --no-global-shortcuts option
Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18643
2019-02-05 14:32:14 +02:00
Kai Uwe Broulik
f86d70aa63 Merge branch 'Plasma/5.15' 2019-02-05 13:28:56 +01:00
Kai Uwe Broulik
7a914e70b6 Merge branch 'Plasma/5.12' into Plasma/5.15 2019-02-05 13:28:45 +01:00
Kai Uwe Broulik
bc5978b759 [effects/startupfeedback] Fix shader
Provide both 1.10 and 1.40 shaders.

Differential Revision: https://phabricator.kde.org/D18757
2019-02-05 13:28:14 +01:00
Vlad Zagorodniy
0a9b8a49ee Merge branch 'Plasma/5.15' 2019-02-05 13:57:28 +02:00
Vlad Zagorodniy
582966db52 Merge branch 'Plasma/5.12' into Plasma/5.15 2019-02-05 13:57:09 +02:00
Vlad Zagorodniy
64115d4de2 Save the correct value of noborder property
Summary:
We can't use Client::noBorder while saving the desktop session because
the returned value is not necessarily set by the user.

BUG: 403948

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18756
2019-02-05 13:55:46 +02:00
Vlad Zagorodniy
8eaf40cc21 Merge branch 'Plasma/5.15' 2019-02-04 22:59:12 +02:00
Vlad Zagorodniy
0b4482dc2e [kcmkwin/compositing] Fix effect video previews
Summary:
Currently, video previews do not work because we try to call showHide()
function that was removed in 787c39cd42.

Reviewers: #kwin, #plasma, davidedmundson

Reviewed By: #kwin, #plasma, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18720
2019-02-04 22:47:18 +02:00
Vlad Zagorodniy
487990009a Move ExtendedCursor::Shape's doc comment to the correct place
Summary:
It probably has to be placed above the enum, though I'm not sure whether
it applies to ExtendedCursor::Shape or CursorShape.

Test Plan: Compiles.

Reviewers: #kwin, apol

Reviewed By: apol

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18669
2019-02-04 13:59:57 +02:00
Vlad Zagorodniy
5ad797d5fe [autotests] Test maximize animation
Test Plan:
    dbus-run-session ctest -R testMaximizeAnimation

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18166
2019-02-01 13:50:40 +02:00
Vlad Zagorodniy
621370d729 [autotests] Test minimize animations
Test Plan:
    dbus-run-session ctest -R testMinimizeAnimation

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18162
2019-02-01 13:50:40 +02:00
Vlad Zagorodniy
872831fb15 [autotests] Test desktop switching animations
Summary:
The new test verifies some common things about desktop switching
animation effects, it doesn't verify what each of one them is doing
because it wouldn't be worth it.

Test Plan:
    dbus-run-session ctest -R testDesktopSwitchingAnimation

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18156
2019-02-01 13:50:40 +02:00
Vlad Zagorodniy
97cf32f916 Drop ShellClient::shellSurface method
Summary:
The only place where this method is used is testMaximize. Though that
usage is not justified. We're checking what KWayland already checks.

Test Plan: Compiles, all tests still pass.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18635
2019-02-01 12:54:27 +02:00
Vlad Zagorodniy
5a98591fff [libkwineffects] Adjust whitespace in AnimationEffect's header
Test Plan: Compiles.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D17835
2019-02-01 00:31:01 +02:00
Vlad Zagorodniy
09cf04eec4 [libkwineffects] Use Q_DISABLE_COPY in AnimationEffect
Summary:
AnimationEffect is an identity so delete copy constructor and copy
assignment operator.

Test Plan: Compiles.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D17838
2019-02-01 00:29:25 +02:00
Alex Nemeth
3c2148a5fb [effects/blur] Update blur to be more natural
Summary:
This gets rid of the dark area that may appear between very different colors by doing the blur in SRGB colorspace.
This is not enabled for GLES, and will use the previous blur type.

Test Plan:
Before:
{F6577457}

After:
{F6577458}

Reviewers: #vdg, #kwin, davidedmundson, zzag, fredrik, ngraham

Reviewed By: #vdg, fredrik, ngraham

Subscribers: Codezela, fredrik, abetts, Petross404, rapiteanu, filipf, rooty, ngraham, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18377
2019-01-31 19:21:40 +01:00
Vlad Zagorodniy
4853228bc5 [kcmkwin/rules] Fix line separators in the dialog
Summary:
{F6576622}

{F6576625}

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18616
2019-01-30 15:56:28 +02:00
David Edmundson
7d10ab0fe7 [wayland] Drop Qt extended surface
Summary:
This is only relevant on Qt and when WlShell is used.
This was only the case before Qt5.10.

We will depend on Qt5.12 next release.
Static Qt builds which are that old typically wouldn't contain QtWayland

Test Plan: Compiles. Not used in tests

Reviewers: #kwin, graesslin

Reviewed By: #kwin, graesslin

Subscribers: graesslin, zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18594
2019-01-30 01:00:41 +00:00
David Edmundson
4240c4af05 [wayland] Call ShellClient install interface methods consistently
Summary:
When we create a new Shellclient there may be a pending relevant
interface.

For every other case this is handled in WaylandServer, the class
responsible for attaching new interfaces at runtime.
The only exception is ServerSideDecorationInterface which is handled in
the ShellClient constructor.

This makes everything consistent.

No behavioural changes.

Test Plan: Ran unit tests

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18592
2019-01-30 01:00:41 +00:00
Erik Kurzinger
f294e7a035 Call frameRendered for undamaged Wayland surfaces
Currently, if a Wayland surface registers a frame callback but does
not send a damage event, the callback will not be serviced even after
KWin has completed a compositing cycle and is therefore ready to
render a new frame for the surface. Since some clients, including any
using NVIDIA's Wayland EGL implementation, wait for frame events
before preparing each frame this behavior can result in hangs if a
compositing cycle occurs between registering the frame callback and
sending the damage event.

Instead, in accordance with the Wayland specification, frame callbacks
should be serviced (via KWayland::Server::SurfaceInterface::frameRendered)
for all visible windows - not just those damaged since the last
compositing cycle.
2019-01-29 12:38:42 -08:00
David Edmundson
18dd0327c2 [autotests] Untangle ShellClient::testMaximizedToFullscreen
Summary:
XdgShell and WlShell behave very differently when it comes to switching
from normal to maximised to fullscreen and back. Under XDGShell they are
2 properties, under WlShell it's a tristate enum.

This test was testing something very specific under WlShell and then
became a horrid mess of if statements doing different things and testing
different things, especially after XdgShell got proper configure
handling.

This patch splits it into two methods.

Test Plan:
Ran test
Passed

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18589
2019-01-29 12:31:06 +00:00
Vlad Zagorodniy
bd15c1185d Trim whitespace 2019-01-28 02:28:48 +02:00
Martin Flöser
07e394fbb7 Fix unused param warning
Sorry for introducing them.
2019-01-27 14:03:53 +01:00
Martin Flöser
cfecb1e077 Fix reorder warning in AbstractScript
Summary:
scripting/scripting.h:205:13: warning: ‘KWin::AbstractScript::m_pluginName’ will be initialized after [-Wreorder]
     QString m_pluginName;
             ^~~~~~~~~~~~
scripting/scripting.h:204:13: warning:   ‘QString KWin::AbstractScript::m_fileName’ [-Wreorder]
     QString m_fileName;
             ^~~~~~~~~~
scripting/scripting.cpp:230:1: warning:   when initialized here [-Wreorder]
 KWin::AbstractScript::AbstractScript(int id, QString scriptName, QString pluginName, QObject *parent)
 ^~~~

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18560
2019-01-27 13:25:40 +01:00
Martin Flöser
2608026b88 Silence warnings in TabBoxHandler
Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18406
2019-01-27 13:25:24 +01:00
Martin Flöser
932ccb2ac3 Switch ThumbnailItem to internal uuid instead of WId
Summary:
So far the ThumbnailItem in TabBox mode used the window id for finding
the window it should render a thumbnail on. In the Wayland world this is
not unique. The window id could be either an X11 window or a wayland
window. We don't guarantee that there are no conflicting ids.

With the internal id we have a way to properly identify the windows, so
this element should use them.

To support this the property changed the type to QUuid and the
clientmodel also provides the QUuid. As in TabBox the way to get the
window is through the model this should be compatible for all themes.
It's tested and verified with the Breeze switcher.

For declarative KWin scripts the ThumbnailItem also provides the
AbstractClient as a property, so there should not be any script which
uses wid. If it does, this could break, but well the script should use
the intended API.

Test Plan: ctest passes, manual testing of Breeze alt-tab switcher

Reviewers: #kwin

Differential Revision: https://phabricator.kde.org/D18405
2019-01-27 09:52:15 +01:00
Martin Flöser
02a0561016 Add windowsystem plugin for KWin's qpa
Summary:
KWindowSystem provides a plugin interface to have platform specific
implementations. So far KWin relied on the implementation in
KWayland-integration repository.

This is something I find unsuited, for the following reasons:
 * any test in KWin for functionality set through the plugin would fail
 * it's not clear what's going on where
 * in worst case some code could deadlock
 * KWin shouldn't use KWindowSystem and only a small subset is allowed
to be used

The last point needs some further explanation. KWin internally does not
and cannot use KWindowSystem. KWindowSystem (especially KWindowInfo) is
exposing information which KWin sets. It's more than weird if KWin asks
KWindowSystem for the state of a window it set itself. On X11 it's just
slow, on Wayland it can result in roundtrips to KWin itself which is
dangerous.

But due to using Plasma components we have a few areas where we use
KWindowSystem. E.g. a Plasma::Dialog sets a window type, the slide in
direction, blur and background contrast. This we want to support and
need to support. Other API elements we do not want, like for examples
the available windows. KWin internal windows either have direct access
to KWin or a scripting interface exposed providing (limited) access -
there is just no need to have this in KWindowSystem.

To make it more clear what KWin supports as API of KWindowSystem for
internal windows this change implements a stripped down version of the
kwayland-integration plugin. The main difference is that it does not use
KWayland at all, but a QWindow internal side channel.

To support this EffectWindow provides an accessor for internalWindow and
the three already mentioned effects are adjusted to read from the
internal QWindow and it's dynamic properties.

This change is a first step for a further refactoring. I plan to split
the internal window out of ShellClient into a dedicated class. I think
there are nowadays too many special cases. If it moves out there is the
question whether we really want to use Wayland for the internal windows
or whether this is just historic ballast (after all we used to use
qwayland for that in the beginning).

As the change could introduce regressions I'm targetting 5.16.

Test Plan:
new test case for window type, manual testing using Alt+Tab
for the effects integration. Sliding popups, blur and contrast worked fine.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18228
2019-01-27 08:59:58 +01:00
Bhushan Shah
ef510b4e76 remove superfluous code
Summary:
For some reason this lines are duplicated twice, (possibly due to merge
conflict resolution?), clean it up.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18348
2019-01-27 12:05:22 +05:30
Vlad Zagorodniy
253ff428a7 [effects] Port to new connect syntax
Summary:
The new connect syntax has several advantages over the old syntax:

(a) Connecting with the new syntax is faster;
(b) It is compile time checked.

There are still a few places where the old connect syntax is used, e.g.
connecting to QML buttons in the Desktop Grid effect.

Test Plan:
Have been testing this patch for ~2 weeks, haven't noticed any
regressions.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, broulik, graesslin, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18368
2019-01-26 01:22:06 +02:00
Roman Gilg
4729a42c34 Name Wayland socket automatically when no socket name was specified
Summary:
Wayland provides functionality for servers to acquire an unused socket name
automatically. Do this through the recently added functionality in KWayland
in case no socket name was specified as an argument to KWin.

Test Plan: Manually, autotests pass.

Reviewers: #kwin, fvogt

Reviewed By: fvogt

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18522
2019-01-25 13:38:54 +01:00
Vlad Zagorodniy
260fa71d5d Send done event after the number of rows has been changed
Summary:
The plasma virtual desktop protocol states the following about
the done event

> This event is sent after all other properties has been sent after
> binding to the desktop manager object and after any other property
> changes done after that.

Thus we have to send that event when the number of rows has been changed.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D18518
2019-01-25 14:07:07 +02:00
David Edmundson
7762da7622 Merge branch 'Plasma/5.15' 2019-01-25 10:35:17 +00:00