Commit graph

20386 commits

Author SHA1 Message Date
Fredrik Höglund
5191311d36 [effects/blur] Disable sRGB when the framebuffer is linear
Disable sRGB rendering when the color encoding of the default
framebuffer is linear.

BUG: 408594
FIXED-IN: 5.16.3

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

Signed-off-by: Fredrik Höglund <fredrik@kde.org>
2019-07-09 00:43:33 +02:00
Tomaz Canabrava
a3f2d56eaf Don't call << in a temporary vector
Summary: Create the vector using an initializer list.

Reviewers: davidedmundson

Reviewed By: davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D21263
2019-07-08 21:05:25 +02:00
Roman Gilg
4f7800a56a Correct code style of Client fullscreen control
Summary:
As a preperational step for future changes obey the code
styling guide in Client fullscreen functionality.

No functional changes.

Test Plan: Manually, autotests pass.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: zzag, graesslin, kwin

Tags: #kwin

Maniphest Tasks: T11098

Differential Revision: https://phabricator.kde.org/D18153
2019-07-08 12:51:57 +02:00
Roman Gilg
1347610bb9 Rework ShellClient fullscreen control
Summary:
The ShellClient::setFullScreen method was a direct copy of the Client
version.

Straighten out the function logic now and align with modern coding style.

In short we check:
1. what the manual override window rule wants,
2. if there is a change at all with this,
3. if such a change is possible.
And do:
4. (un-)set the fullscreen,
5. emit the changed signal.

Test Plan: Manually, autotests pass.

Reviewers: #kwin

Subscribers: zzag, kwin

Tags: #kwin

Maniphest Tasks: T11098

Differential Revision: https://phabricator.kde.org/D18132
2019-07-08 12:44:13 +02:00
Vlad Zagorodniy
3e1b616642 Merge branch 'Plasma/5.16' 2019-07-08 12:45:56 +03:00
Vlad Zagorodniy
0a9c254769 Fix maximize Apply Now rule
Summary:
AbstractClient applies maximize rules by running

    maximize(maximizeMode());

but because window rules are checked only in changeMaximize
implementation, the if statement prevents us from applying maximize
rules (m and maximizeMode() are equal).

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: romangg, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22255
2019-07-08 12:44:26 +03:00
l10n daemon script
c0f994dafc 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-07-07 08:33:47 +02:00
l10n daemon script
46106bdae0 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-07-07 05:24:04 +02:00
Roman Gilg
787c22ec4c Split up fullscreen able check into AbstractClient subclasses
Summary:
Most parts of this function are only relevant for X clients, in particular
the "fullscreen hack". Therefore split up the function into the AbstractClient
subclasses.

Test Plan: Manually and autotests still pass.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: graesslin, zzag, kwin

Tags: #kwin

Maniphest Tasks: T11098

Differential Revision: https://phabricator.kde.org/D18128
2019-07-06 16:00:32 +02:00
Filip Fila
f2bbb60419 [kcmkwin] Add a clear button to the Desktop Effects search field
Summary: This patch adds a clear button to the Desktop Effects search field by using Kirigami's SearchField.

Test Plan: {F6973312}

Reviewers: #kwin, #vdg, davidedmundson, ngraham

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

Subscribers: ngraham, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22286
2019-07-06 09:47:06 +02:00
Roman Gilg
20205f93f7 Save Compositor state in single variable
Summary:
Replace the several internal state booleans of Compositor with a single
enum to register the current state of the compositor. We register four
states of starting, started, stopping and stopped.

The goal is to replace the several different conditionals when starting
and stopping the compositor with a single well defined flow.

There are currently still some ugly conditionals and some replaced ones
might need some more work.

Test Plan: Manually in X and Wayland. Relevant auto tests pass.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, kwin

Tags: #kwin

Maniphest Tasks: T11071

Differential Revision: https://phabricator.kde.org/D22277
2019-07-04 22:52:05 +02:00
Roman Gilg
d21f09d4ab Remove Compositor created check
Summary:
Cleans up the Compositor code some more. The check is only
used in a single assert statement.

Test Plan: Compiles.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, kwin

Tags: #kwin

Maniphest Tasks: T11071

Differential Revision: https://phabricator.kde.org/D22278
2019-07-04 20:18:28 +02:00
Roman Gilg
09cfc2c0b4 Remove composite reset timer
Summary:
To streamline Compositor code more remove the composite reset timer. The two
times it was used we can either use a singleshot timer instead or connect the
call to a different signal in the X11 backend.

Long term goal is to have a well structured init of the Compositor such that
we can call directly instead.

Test Plan: Manually in X and Wayland nested session.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, kwin

Tags: #kwin

Maniphest Tasks: T11071

Differential Revision: https://phabricator.kde.org/D22270
2019-07-04 19:15:36 +02:00
Roman Gilg
8c047613c5 Partly remove Compositor restart functionality
Summary:
This removes the restart function of the Compositor class and renames the
internal reinitialize function.

Instead of the restart function reinitialize can be called. Reading again
the settings in this case is fine, since it is done rarely. This reduces
the code complexity.

Test Plan: Manually on Wayland and X. 100% autotests pass.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: davidedmundson, zzag, kwin

Tags: #kwin

Maniphest Tasks: T11071

Differential Revision: https://phabricator.kde.org/D22225
2019-07-04 15:31:40 +02:00
Roman Gilg
ba6daecb4f Remove compositing initialized check
Summary:
The check is used to limit settings reload. But we can afford to reload
settings in case the compositing gets toggled since this happens rarely.

Removing the check reduces code complexity.

Test Plan: Manually in X and Wayland.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: kwin

Tags: #kwin

Maniphest Tasks: T11071

Differential Revision: https://phabricator.kde.org/D22220
2019-07-04 14:49:10 +02:00
Roman Gilg
cc801a4518 Use new slot syntax in Compositor class
Summary:
As a preparation for further changes clean up the Compositor
class. First step is to use the new slot syntax and rename
some of the slots.

Includes some other minor code style improvements to the class
as well.

Test Plan: Manually in X and Wayland nested session.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: davidedmundson, zzag, kwin

Tags: #kwin

Maniphest Tasks: T11071

Differential Revision: https://phabricator.kde.org/D22218
2019-07-04 14:22:04 +02:00
Vlad Zagorodniy
3608fb52dd Pedantic whitespace additions 2019-07-03 19:56:36 +03:00
Vlad Zagorodniy
01ff92d16c Add more details about default implementation of isInternal() 2019-07-03 19:44:37 +03:00
Vlad Zagorodniy
88c4c58072 [xwl] Fix coding style issues 2019-07-03 00:54:55 +03:00
Vlad Zagorodniy
bb6d1153f7 [plugins/qpa] Return a fixed value logicalDpi
Summary:
Font scaling is based on the screen scale factor so we can just return
dpi of 96.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22219
2019-07-02 22:32:39 +03:00
Vlad Zagorodniy
1892bd33f2 [platforms/drm] Refactor out Edid class
Summary:
The new class is responsible for parsing EDID blobs. It has pretty
straightforward API: you hand blob data to the constructor and after
that you're ready to query parsed data, e.g. physical size, etc.

The main reason to extract EDID parsing code into a class is to clean up
drm_output.cpp a bit.

Test Plan: Compiles, the DRM platform still works.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22211
2019-07-02 20:45:55 +03:00
Roman Gilg
a502804337 Remove unused signal from Workspace
The signal Workspace::reinitializeCompositing is nowhere actually emitted.
2019-07-02 13:47:08 +02:00
Vlad Zagorodniy
baabd20ef6 Drop QOffscreenSurface guard
Summary:
Given that our QPA now creates native offscreen surfaces, we no longer
need the QOffscreenSurface guard introduced by 61956025f.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: romangg, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22198
2019-07-01 22:34:41 +03:00
Vlad Zagorodniy
c8280963e5 [plugins/qpa] Code tidying
Summary: This change cleans up includes, fixes coding style issues, etc.

Test Plan: Compiles.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: romangg, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22151
2019-07-01 22:04:45 +03:00
Vlad Zagorodniy
f5b66a583d [plugins/qpa] Implement native offscreen surface
Summary:
Depending on whether the underlying platform supports offscreen surfaces,
QOffscreenSurface may create an invisible QWindow. In our case that's the
case, for each offscreen surface a native window is created. This may
lead to some funky results related to window decorations, see bug 407612.

There are several ways to implement offscreen surfaces - either use pbuffers
or utilize a surfaceless context extension. For the sake of simplicity
this change sticks with pbuffers, but it's a good idea to support both
methods.

CCBUG: 407612

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: romangg, alexeymin, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22150
2019-07-01 22:04:40 +03:00
Vlad Zagorodniy
22d70d0c56 [plugins/qpa] Split out EGL helpers
Summary: This change is a prerequisite for adding offscreen surface support.

Reviewers: #kwin, romangg

Reviewed By: #kwin, romangg

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22196
2019-07-01 21:42:18 +03:00
Vlad Zagorodniy
b9f922b82a Merge branch 'Plasma/5.16' 2019-06-30 15:46:29 +03:00
Vlad Zagorodniy
499eccb1c8 [tabbox] Properly determine depressed modifiers on X11
Summary:
A keysym can be assigned to several keycodes, so more proper way to
determine whether given modifier is depressed is to iterate over all
returned keycodes and see if any is pressed.

If we check only the first keycode, then alternative mappings may not
work, e.g. alt key mapped to win, etc.

BUG: 407720

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D21302
2019-06-30 15:46:18 +03:00
Fredrik Höglund
3d384f3c90 glx: Prefer an sRGB capable fbconfig
Prefer an sRGB capable fbconfig for the default framebuffer.

CCBUG: 408594

Signed-off-by: Fredrik Höglund <fredrik@kde.org>
2019-06-29 13:09:34 +02:00
Vlad Zagorodniy
4634c3a2c6 Merge branch 'Plasma/5.16' 2019-06-29 01:24:38 +03:00
Vlad Zagorodniy
61956025f0 Decorate only toplevel internal clients
Summary:
Unfortunately Aurorae decoration engine creates several internal clients
per each decoration. One of those clients represents QOffscreenSurface,
which is not a toplevel. Given that no QWindow object will be found for
such clients, m_internalWindowFlags contains undefined value.

Luckily, QOffscreenSurface sets FramelessWindowHint flag, but because
InternalClient is not able to find matching QWindow object, cached
QWindow flags won't have that hint set.

Thus InternalClient will attempt to decorate QOffscreenSurface. A new
Aurorae decoration will be created, which means a new QOffscreenSurface
will be created, which means a new Aurorae decoration will be created,
and so on.

This change restricts subset of internal clients that can be decorated.
Only clients with valid m_internalWindow can be decorated. If m_internalWindow
isn't null, then m_internalWindowFlags is guaranteed to be valid as well.

BUG: 407612
FIXED-IN: 5.16.3

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22136
2019-06-29 01:24:14 +03:00
Vlad Zagorodniy
06363b1c17 [scripts] Drop enforcedeco script
Summary:
GTK clients check whether _GTK_FRAME_EXTENTS is in _NET_SUPPORTED, so we
don't need this script anymore.

Also, because GTK clients don't set shadow extents, this script
is doing nothing.

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: ngraham, jackg, broulik, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D21371
2019-06-29 01:21:42 +03:00
Roman Gilg
bc309929a0 [autotests] Fix debug console test
Summary:
Use QTRY_COMPARE macro to not fail if signal already sent. Also shorten
timeout on expect to fail test for faster test runs.

Test Plan: Debug console test passes again.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22124
2019-06-27 19:19:17 +02:00
Roman Gilg
349560a78c [autotests] In internal window test remove spy waits or guard them
Summary:
The internal window test is failing on CI because the client add spy waits
are not triggered. The signal has been emitted already at this point.

Removing them fixes this (the condition is still checked by subsequent
count verify on the spy) in all but one instance. In this case the wait
needs to be guarded.

Is there a more general approach to it? Always guarding is ugly. Also when
was this test regression introduced? In the past we must have had some
slack until the signal was fired to start the wait call.

Test Plan: Internal window test passes with this patch again.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: davidedmundson, zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22119
2019-06-27 18:38:22 +02:00
Roman Gilg
ead1b34563 KSelectionOwner usage in ApplicationX11 and Compositor classes
Summary:
Declare it in the source file for internal usage of ApplicationX11 and
Compositor classes. Additionally use modern style connect and do other
code style updates.

Test Plan: Manually in X session and Wayland windowed.

Reviewers: #kwin, zzag

Subscribers: davidedmundson, sbergeron, zzag, kwin

Tags: #kwin

Maniphest Tasks: T11071

Differential Revision: https://phabricator.kde.org/D21655
2019-06-27 18:08:12 +02:00
Roman Gilg
486c2f4534 [platformsupport] Minor code style and class variables access changes
Summary:
Some of these variables have been declared protected but can apparently
also be private.

Other minor code style improvements.

Test Plan: Compiles, Wayland nested session runs.

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22109
2019-06-27 15:22:40 +02:00
Roman Gilg
73fa7df1fc [autotests] Fix remaining autotests with failing border calculation
Summary:
As in 2c088894b fix remaining autotests failing since no borders has become
the new default behavior of Breeze.

Autotests should not rely on this default behavior of Breeze though, but be
run with a faked deco such that changes on Breeze does not directly change
the autotests behavior. That's a goal for the future.

Test Plan: 100% tests passed, 0 tests failed out of 147

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D21746
2019-06-27 13:44:03 +02:00
David Edmundson
26d7996e54 Merge branch 'Plasma/5.16' 2019-06-27 09:16:05 +02:00
Jonathan Riddell
137b3fbf26 Update version number for 5.16.2
GIT_SILENT
2019-06-25 12:15:02 +01:00
l10n daemon script
e5f03039d8 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-06-25 08:31:40 +02:00
l10n daemon script
e9840c5ba6 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-06-25 05:20:51 +02:00
David Edmundson
842b2ce51b [placement] Avoid smart placement strategy with invalid client sizes
Summary:
To do so can in some situations lock up as the loop goes through
different positions incrementing by client->width/height.

If this is zero we can get into a stuck state.

This became a more common issue due to my earlier patch that places windows
in ShellClient::finishInit to allow the maximize placement strategy to
set the first configure size.

BUG: 408754

Reviewers: #kwin, broulik

Reviewed By: broulik

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D21997
2019-06-24 22:59:21 +02:00
Aleix Pol
cbd200d147 Merge branch 'Plasma/5.16' 2019-06-23 20:00:09 +02:00
Aleix Pol
22cbbca043 Make sure we don't resize clients before they've been set up
Summary:
On Placement=Maximized it becomes a problem because we end up sending an invalid size and when we try to recover from it, we recover from the wrong size.
This fixes setting the right size to Plasma Mobile applications.

Reviewers: #kwin

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D22054
2019-06-23 19:59:19 +02:00
David Edmundson
3604aaf74c Close screen grabbing effect when screensaver starts
Summary:
The screenlock fails on X11 if it can't grab the keyboard.

We can't nicely solve the generic case. We can solve the common case of
a kwin effect being active.

It's not critical, arguably not even desirable to have these effects
persist after the screen is locked through an external trigger. We can
just close the effect early.

Key grabs have to be relased early before the close animation completes
so that the locker doesn't have a race based on animation times.

It's not ideal, but no worse than the current state for not much work.

BUG: 234153

Test Plan:
locked screen on a timer
opened various effects

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: ngraham, zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D20890
2019-06-23 18:00:47 +02:00
David Edmundson
3e428d3388 Merge branch 'Plasma/5.16' 2019-06-23 17:59:10 +02:00
David Edmundson
515f3cbb4e Avoid crash without XWayland
Summary: readX11ShadowProperty fails without an X connection

Test Plan: Tested by Kai who didn't have xwayland

Reviewers: #kwin, zzag

Reviewed By: #kwin, zzag

Subscribers: zzag, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D21965
2019-06-23 17:58:49 +02:00
David Edmundson
9917aef95f Merge branch 'Plasma/5.16' 2019-06-22 17:28:12 +02:00
David Edmundson
bc97232dfd [wayland] Obey m_requestGeometryBlockCounter inside updateDecoration
Otherwise we can send our configure request too early

Reviewed-by: Bhushun Shah
2019-06-22 17:25:13 +02:00
Aleix Pol
bb9a5e57a1 Implement the keystate protocol
Summary: Depends on D20191

Reviewers: #kwin, davidedmundson

Reviewed By: #kwin, davidedmundson

Subscribers: davidedmundson, graesslin, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D20192
2019-06-22 12:34:06 +02:00