Commit Graph

16291 Commits (6072b0cd6c370749f28418f22a1284de5aba3462)

Author SHA1 Message Date
Roman Gilg 6072b0cd6c Remove breaking pointer constraints functionality
Summary:
With 2694839099, 0bd5eff862 and f0ba436c72 it is now possible to
unconstrain a pointer by killing the client or deactivating the window, for
example by switching the window via the TabBox.

A user should always be able to do it therefore without needing to explicitly
break the pointer constrain as in the past with the Esc key.

Therefore remove the functionality and also remove the OSD announcing it,
which was often shown at the wrong time.

Test Plan: Manually and auto test adapted.

Reviewers: #kwin, #vdg, hein

Reviewed By: hein

Subscribers: ngraham, hein, kwin

Tags: #kwin

Maniphest Tasks: T8923

Differential Revision: https://phabricator.kde.org/D15234
2018-09-12 22:55:26 +02:00
Vlad Zagorodniy 74994a7fbd [effects/trackmouse] Allow to use both modifiers and shortcut
Summary:
The Track Mouse effect can be toggled either by pressing modifier keys
and moving mouse or by pressing a shortcut. It's not possible to use
the latter and then the former without changing config.

But there is one caveat, in order to use shortcut, you have to uncheck
all modifier keys. This seems to be not very intuitive.

In addition to that, the KCM allows to change shortcut even if there is
some checked modifier.

As the title says, this change makes possible to use both modifier keys
and shortcut to activate this effect without changing config.

KCM:
{F6237308, layout=center, size=full}

BUG: 398124
FIXED-IN: 5.14.0

Reviewers: #kwin, #plasma, #vdg, davidedmundson

Reviewed By: #kwin, #plasma, #vdg, davidedmundson

Subscribers: broulik, abetts, ngraham, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15272
2018-09-12 16:37:05 +03:00
Vlad Zagorodniy cc1f30b43d [effects/showpaint] Modernize code
Summary:
Summary of changes:
* Use QVector to store colors
* Add Q_OBJECT macro
* Port away from QRegion::rects
* Fix coding style
* Use default member initialization
* Use nullptr
* Reserve rects in paintXrender

The behavior of this effect haven't been changed, it still acts as before.

Test Plan: Compiles, and the Show Paint effect is still a psychedelic thing.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15424
2018-09-11 17:01:17 +03:00
Vlad Zagorodniy 113ebe9bc2 [effects] Fix type of X-KWin-Video-Url
Summary:
The desktop file parser supports only QString, QStringList, Int, Double,
and Bool. QUrl is not a supported type for some reason.

Thus, let's use QString for X-KWin-Video-Url.

Reviewers: #kwin, broulik

Reviewed By: broulik

Subscribers: Zren, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15373
2018-09-11 13:46:35 +03:00
Roman Gilg 1fada99478 Activate clients on drag enter
Summary:
We currently only raise a client when a drag enters it and not activate it.
This is confusing since afterwards the raised window has not keyboard focus
although visually being in front of the window the drag originated from.

Therefore activate entered windows instead of only raising them.

Test Plan: Manually and autotests still pass.

Reviewers: #kwin, hein

Reviewed By: hein

Subscribers: anthonyfieroni, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15225
2018-09-11 11:20:18 +02:00
Vlad Zagorodniy 03a2a05fc7 [effects/dialogparent] Fix strict mode issues
Summary:
Modification of undeclared variables is illegal in the strict mode, e.g.

```lang=js
mainWindows = window.mainWindows();
```

is illegal.

Test Plan: The Dialog Parent effect works with both QScriptEngine and QJSEngine.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15413
2018-09-10 22:49:49 +03:00
Vlad Zagorodniy 617b4d92fa [effects/magnifier] Fix 1 px gap between magnified area and frame
Summary:
The x-coordinate of the area's left edge and y-coordinate of the area's
top edge are adjusted by 1px leading to a gap between the frame and
magnified area. Because area has type of QRect, we have to adjust only
coordinates of the right and bottom edge by 1 px.

Because QRectF::right() == QRectF::x() + QRectF::width(), we can use
QRectF, which leads to more cleaner code because we don't need to do 1px
adjustments.

Test Plan:
Before:
{F6235388, layout=center, size=full}

After:
{F6235439, layout=center, size=full}

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15275
2018-09-10 13:08:25 +03:00
l10n daemon script de6db0599e 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"
2018-09-08 06:16:40 +02:00
l10n daemon script 62d659b90f 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"
2018-09-07 06:02:56 +02:00
Luca Beltrame ce2705d71f
Revert "Search in default path before calling pkg-config"
Build system changes can be potentially breaking and so must be reviewed
prior to commit. In addition, there is no explanation for this change.

Simon, you might want to submit your patches to Phabricator for review
prior to landing them.

CCMAIL: sdepiets@gmail.com

This reverts commit 4f4f3295f2.
2018-09-06 09:34:26 +02:00
Simon Depiets 4f4f3295f2 Search in default path before calling pkg-config 2018-09-06 13:45:26 +08:00
Vlad Zagorodniy 3a46b3707a [effects/slide] Use QOverload
Summary: With QOverload the code is slightly cleaner.

Test Plan: Compiles.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15300
2018-09-05 21:01:43 +03:00
l10n daemon script ce31ac08d4 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"
2018-09-04 06:05:23 +02:00
Jonathan Riddell f92d806343 QT_MIN_VERSIONS is Qt 5.11 for Plasma 5.14. Agreed at kickoff meeting. Set everywhere for clearity and consistency. 2018-09-03 13:34:39 +01:00
Roman Gilg 1fb2eace3f Avoid invalid geometry of internal clients through plasma surface interface
Summary:
Internal KWin windows might be not in sync with their PlasmaShellSurface.
This could be a problem in general, but for now atleast guard against
invalid setPosition requests.

BUG: 386304

Test Plan: Manually

Reviewers: #kwin, davidedmundson

Subscribers: davidedmundson, ngraham, graesslin, kwin

Tags: #kwin

Maniphest Tasks: T8771

Differential Revision: https://phabricator.kde.org/D13084
2018-09-03 11:25:45 +02:00
l10n daemon script 1f4682f249 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"
2018-09-02 05:50:35 +02:00
Vlad Zagorodniy 624a453109 Clean up includes
Summary:
* effects.h includes client.h and forward declares Client, both at the
  same time. Thus, delete the include;

* the blur effect includes effects.h. That, most likely, is a leftover
  after 3f5bf65a9e.

Test Plan: Compiles.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15191
2018-08-31 22:58:11 +03:00
Andrius Štikonas f96bea7c73 Fix capitalization typo. 2018-08-31 16:29:40 +00:00
Vlad Zagorodniy dadcd51135 [scenes/opengl] Fix overlaps in shadow texture atlas
Summary:
If the corner shadow tiles(top-left, top-right, and so on) tiles are missing,
then the left/top/right/bottom shadow tiles will overlap.

This diff addresses that problem by changing how the shadow texture
atlas is rendered:
* corner tiles will be drawn in the corners of the atlas(buildQuads
  method expects them to be at the corners);
* top, right, bottom, and left tile will be aligned to the top-left
  corner of the inner shadow rect.

For majority of desktop themes, the shadow texture atlas looks the same.
For example, here's for Aether:

Before:
{F6190484, layout=center, size=full}

After:
{F6190488, layout=center, size=full}

Depends on D14783

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, abetts, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D14784
2018-08-31 17:33:19 +03:00
Vlad Zagorodniy 5e55664de8 [scenes/opengl] Correctly draw shadows when corner tiles are missing
Summary:
Current implementation of buildQuads assumes that corner shadow tiles
are always present:

    const QRectF leftRect(
        topLeftRect.bottomLeft(),
        bottomLeftRect.topRight());

but that assumption is wrong. For example, if the default panel is on
the bottom screen edge, then the calendar popup won't have the
bottom-left shadow tile(at least on Wayland). Which means that the left
shadow tile won't be visible because
topLeftRect.left() == bottomLeftRect.right().

Corner rectangles only have to influence height of the left/right tile
and width of the top/bottom tile. Width of the left/right tile and
height of the top/bottom tile should not be controlled by corner tiles.

Overall, this is how shadow quads are computed:

* Compute the outer rectangle;
* Compute target rectangle for each corner tile. If some corner tile is
  missing, move the target rectangle to the corresponding corner of the
  inner shadow rect and set its width and height to 0. We need to do
  that to prevent top/right/bottom/left tiles from spanning over
  corners:

{F6190219, layout=center, size=full}

We would rather prefer something like this if the top-left tile is
missing:
{F6190233, layout=center, size=full}

* Fix overlaps between corner tiles;
* Compute target rectangles for top, right, bottom, and left tiles;
* Fix overlaps between left/right and top/bottom shadow tiles.

Test Plan:
* Ran tests;
* Resized Konsole to its minimimum size(on X11 and Wayland);
* Opened the calendar popup(on X11 and Wayland):

Before:
{F6190344, layout=center, size=full}

After:
{F6190346, layout=center, size=full}

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: abetts, davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D14783
2018-08-31 17:33:19 +03:00
Roman Gilg 95cb47cae2 [platforms/virtual] Set raw physical size of outputs
Summary: At least one test requires the physical size to be set.

Test Plan:
Lock screen screen edges test is passing again. Without the change the corner
offset in the ScreenEdges class is not calculated correctly via the
physicalDpiX() and physicalDpiY() values of an auxilliary QWidget.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15183
2018-08-31 13:22:55 +02:00
Roman Gilg 9cf2730f8d [colorcorrection] Set gamma through Output class
Summary:
With the new Output class we can set the gamma directly here. This is also
a stepping stone to adjust individual output gamma adjustment later on.

This means any future backend, which aims to support the color correction
frontend needs to use the Output class.

Test Plan: Night Color test still passes.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11803
2018-08-31 11:58:21 +02:00
Roman Gilg b22c362bd5 [platforms/virtual] Let VirtualOutput inherit Output
Summary:
Let VirtualOutput be a child class of the new generic class Output.
This allows code sharing and a very similar behavior of the Virtual backend
in comparision to the Drm backend.

Test Plan:
Autotests succesful with two exceptions: The decoration input test fails on
testDoubleTap, row topLeft. This is to be expected because now the
ScreenEdgeInputFilter captures the event at position (0,0) before the
DecorationEventFilter can capture it. The autotest was adapted to take this
special case into account.

Also the lockscreen test fails, because the virtual output is currently missing
the physical size yet.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11789
2018-08-31 11:56:39 +02:00
Roman Gilg 3482378278 Introduce OutputScreens class
Summary:
Lift high-level properties into new Screens child class for platform plugins
using the Output class.

Directly make DrmScreens a child class of OutputScreens.

Test Plan: Manually and auto tests with 94%.

Reviewers: #kwin

Differential Revision: https://phabricator.kde.org/D11782
2018-08-31 11:53:23 +02:00
Roman Gilg fe63e21f80 Introduce generic Output class
Summary:
In order to separate high-level properties of individual outputs from
hardware-specific ones and access these, introduce a new generic class Output.

Also make the DrmOutput class directly a child class of this generic class.

The long-term goal is to get rid of the Screens global object on Wayland and
instead directly work with Output objects on compositing level.

This should enable us long-term to do direct scanout to hardware planes, what
I predict needs this generic output representation at one point.

Test Plan: Manually.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11781
2018-08-31 11:53:12 +02:00
David Edmundson 8cf5041e69 [libkwineffects] Cleanup effects handler global pointer on destruction
Test Plan:
Won't make a practical difference, anything that used before
would have crashed. Only now it's tidier.

Unit tests still pass

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15171
2018-08-30 14:57:13 +01:00
David Edmundson 7e7eadb44f [autotests] Make lifespan of EffectsHandler outlive Effect
Summary:
In loading tests. Effects are deleted in a deleteLater potentially
outside the scope of our test. Our MockEffectsHandler (which contains
the global static "effects") has the lifespan of the test.

Fixes failing unit test.

Test Plan: Ran test

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D15167
2018-08-30 14:57:13 +01:00
Kai Uwe Broulik fd53c7ed6b Merge branch 'Plasma/5.13' 2018-08-30 13:35:09 +02:00
Kai Uwe Broulik d6bce8d79e Merge branch 'Plasma/5.12' into Plasma/5.13 2018-08-30 13:34:20 +02:00
Kai Uwe Broulik 3cfb7a30f0 Avoid global static for effects
Otherwise we call i18n without a QCoreApplication

Differential Revision: https://phabricator.kde.org/D15163

(cherry picked from commit 0fd939425b)
2018-08-30 13:32:56 +02:00
Vlad Zagorodniy fa5242b3ee [effects] Use more effectData() in BuiltInEffects
Summary:
While BuiltInEffects has effectData() function, many functions repeat
s_effectData.at(index(effect)), which is what effectData() is doing.

By using effectData(), we'll get rid of those repetitions and maybe make
easier transition to other underlying data structure that stores metadata
for builtin effects.

Test Plan: Compiles, all enabled builtin effects are loaded and working.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D13587

(cherry picked from commit 7bfaa6e913)
2018-08-30 13:32:39 +02:00
Kai Uwe Broulik 0fd939425b Avoid global static for effects
Otherwise we call i18n without a QCoreApplication

Differential Revision: https://phabricator.kde.org/D15163
2018-08-30 13:01:43 +02:00
l10n daemon script 16c63efdb7 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"
2018-08-30 05:51:44 +02:00
Yuri Chornoivan bf58da3e9a Fix minor EBN issues 2018-08-29 21:02:16 +03:00
l10n daemon script a5b820ee7e 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"
2018-08-27 08:09:08 +02:00
l10n daemon script 18bf4444ea 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"
2018-08-27 07:44:11 +02:00
l10n daemon script 5e2e9dfa32 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"
2018-08-27 05:52:15 +02:00
l10n daemon script 57796645f8 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"
2018-08-26 08:08:30 +02:00
l10n daemon script 7ac5ac9d6c 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"
2018-08-26 07:37:16 +02:00
l10n daemon script 67332d7c9d 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"
2018-08-26 05:43:38 +02:00
l10n daemon script ef7079b3c5 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"
2018-08-25 05:42:28 +02:00
l10n daemon script c2531b8637 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"
2018-08-22 05:48:57 +02:00
Vlad Zagorodniy defa1061af [effects/diminactive] Fix initialization of m_activeWindow on reconfigure
Summary:
The Dim Inactive effect sees the world a little bit differently.
m_activeWindow is currently active window that can be dimmed later on.
In most cases, it's the same as effects->activeWindow(). In rare cases,
it can be nullptr, even when effects->activeWindow() is not equal to nullptr
(e.g. when active window is a context menu popup).

canDimWindow is a helper that returns true if a given window should be
dimmed, otherwise it returns false. It has one special case: if a given
window is equal to m_activeWindow, return false. I.e. don't dim active
windows.

Currently, if user changes config of this effect, active window becomes
dimmed.

The reason for that is we hit that special case when deciding whether
effects->activeWindow() should be m_activeWindow.

This change addresses that problem by resetting m_activeWindow so we
don't hit that special case.

Test Plan:
* Opened KCM of this effect;
* Changed strength;
* (the KCM window stayed bright after I clicked "Apply" button).

(everything else works as expected)

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D14973
2018-08-21 16:01:55 +03:00
Vlad Zagorodniy 5165ee45b5 [effects] Rewrite the Dim Inactive effect
Summary:
The Dim Inactive effect was rewritten mostly to fix most of issues with
it, e.g. after leaving a full screen effect(e.g. Desktop Grid) windows
sometimes are not dimmed back, or when a window becomes inactive there
is no smooth transition, etc.

{F5956124}
//Before: the window is not smoothly dimmed.//

{F5956127}
//After: the window is smoothly dimmed.//

In combination with an effect that animates the disappearing of windows,
e.g. Glide, the rewritten Dim Inactive effect doesn't "flash" windows.
If an active window has been closed, it will stay bright. If an inactive
window has been closed, it will stay dimmed.

Among other changes, the KCM has been re-designed to follow common KCM
design in Plasma:

{F5956128, layout=center, size=full}

The way the rewritten Dim Inactive effect handles flashing/flickering problem can be
reused in the Dialog Parent effect.

### Demo

{F5959885}
//Before: dimming of a window group.//

{F5959886}
//After: Dimming of a window group.//

Depends on D13740

CCBUG: 359251

Test Plan:
Test plan #1
* Activated the Desktop Grid effect
* Dimmed windows smoothly brightened
* Left desktop grid
* Windows dimmed back

Test plan #2
* Opened Dolphin and its Preferences window
* Clicked on desktop, both Dolphin and the Preferences window dimmed
* Clicked on Dolphin, both windows smoothly brightened back

Reviewers: #kwin, #plasma, #vdg, davidedmundson

Reviewed By: #kwin, #plasma, #vdg, davidedmundson

Subscribers: davidedmundson, abetts, ngraham, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D13720
2018-08-21 11:50:37 +03:00
l10n daemon script e3815aea00 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"
2018-08-21 05:48:42 +02:00
David Edmundson 1238c7bc47 [autotests] Test ScriptedEffects stackingOrder
stackingOrder is an interesting property which needed
special handling in the port. Add an explicit test.

Test Plan: #kwin

Reviewers: broulik

Reviewed By: broulik

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D14533
2018-08-20 17:39:36 +01:00
Vlad Zagorodniy 0a31feb321 [effects/logout] Animate ksmserver-logout-greeter
Summary:
On Wayland session, the logout screen has "ksmserver-logout-greeter
ksmserver-logout-greet" window class, so let's animate it too.

Test Plan:
* Started Wayland session;
* Pressed Ctrl+Alt+Del;
* (the logout screen smoothly faded in);
* Clicked the Cancel button;
* (the logout screen smoothly faded out)

* Started X11 session;
* Pressed Ctrl+Alt+Del;
* (the logout screen smoothly faded in);
* Clicked the Cancel button;
* (the logout screen smoothly faded out)

Reviewers: #kwin, #plasma, davidedmundson

Reviewed By: #kwin, #plasma, davidedmundson

Subscribers: davidedmundson, abetts, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D14848
2018-08-19 22:12:00 +03:00
l10n daemon script 7763b58688 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"
2018-08-19 05:44:25 +02:00
l10n daemon script 061afd7742 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"
2018-08-18 05:47:03 +02:00
Vlad Zagorodniy 4a775dd485 [effects/slidingpopups] Overhaul slotPropertyNotify
Summary:
* Slightly improve readability;
* Check that offset and location have been passed;
* Sanitize slide in/out duration (if any of those is equal to 0, KWin
  will crash).

Test Plan:
* Launched Yakuake;
* Pressed F12 several times (Yakuake still slides in/out).

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D14862
2018-08-17 12:14:01 +03:00