Commit graph

16039 commits

Author SHA1 Message Date
Martin Flöser
d3aa33b51b Reevaluate window rules when the (xdg) shell surface's appId changes
Summary:
Especially when a window is first mapped it might be that the appId is
not yet set. So window rule matching doesn't happen. This change
evaluates the window rules again after the appId changes, so rules for
the appId match.

Test Plan: added test case

Reviewers: #kwin, #plasma

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11268
2018-03-18 09:16:04 +01:00
Martin Flöser
d61eaa2d66 Add a new desktopfile name rule
Summary:
This allows to override the desktop file name.

CCBUG: 351055

Test Plan: Created a window rule for telegram-desktop to fix the icon

Reviewers: #kwin, #plasma

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11266
2018-03-18 09:15:15 +01:00
Nathaniel Graham
f1f97bb395 Expose more default window management shortcuts
Summary:
KWin's window management powers are not as discoverable as they could be--particularly tiling, which by default has no visible UI and no keyboard shortcuts. Resolving this issue is highly relevant to {T6831}.

This patch re-assigns the {key Meta arrowkeys} shortcuts that are currently used for `move zoomed area` (which are pretty esoteric, infrequently-used actions), adding {key ctrl} to their shortcuts. This allows us to use their valuable {key Meta arrowkeys} for more useful and commonly-used window management actions:
- {key Meta Left}: quick tile window to the left
- {key Meta Right}: quick tile window to the right
- {key Meta Up}: quick-tile window to the top
- {key Meta Down}: quick-tile the window to the bottom

The patch also sets some default shortctuts for minimize and maximize:
- {key Meta PageDown}: minimize window
- {key Meta PageUp}: maximize/de-maximize the window

Test Plan:
Do a clean build
`make test` (no new test failures)
Reboot
Create and log into a new user account

- {key meta up} tiles the active window to the top
- {key meta down} tiles the active window to the bottom
- {key meta left} tiles the active window to the left
- {key meta right} tiles the active window to the right
- {key meta PageDown} minimizes the active window
- {key meta PageUp} maximizes and de-maximizes the active window
- {key meta ctrl up} moves the zoomed area up
- {key meta ctrl down} moves the zoomed area down
- {key meta ctrl left} moves the zoomed area to the left
- {key meta ctrl right} moves the zoomed area to the right

Reviewers: #kwin, #plasma, romangg

Reviewed By: #kwin, #plasma, romangg

Subscribers: mart, romangg, broulik, jnoack, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11377
2018-03-16 17:18:55 -06:00
Vlad Zagorodniy
4a3104bf27 don't override m_canUseMipmaps
Summary:
Seems like this override/assignment was introduced in edb0751cba.

Following that commit, 450be6a378 introduced `levels` param
so we could tell whether mipmaps are going to be used. And it seems like this assignment
hadn't been deleted in that commit.

Reviewers: #kwin, fredrik

Reviewed By: fredrik

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11301
2018-03-14 04:37:44 +02:00
Martin Flöser
ab18007d2a Better map ShellClient to resource name and class
Summary:
The window rules dialog did not properly detect the wayland windows. So
I investigated what ICCCM writes about the WM_CLASS property (which is
the base for window rule matching) and checked how ShellClient maps to
it. Basically name and class was swapped and the reason for the
detection not working properly. As we don't have a proper name, the code
is adjusted to generate a name by using the executable name. This is
also what WM_CLASS should be filled with, according to ICCCM.

Test Plan: Rules dialog detects the name and class correctly

Reviewers: #kwin, #plasma

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11023
2018-03-11 15:32:44 +01:00
l10n daemon script
6ff10e4405 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-03-11 07:13:28 +01:00
Friedrich W. H. Kossebau
1a7a3b98ee Remove long-time deprecated Encoding=UTF-8 from desktop format files 2018-03-10 02:47:57 +01:00
Jonathan Riddell
7228c20dd8 Update version number for 5.12.3
GIT_SILENT
2018-03-06 12:16:31 +00:00
Bhushan Shah
90762ade86 Merge branch 'Plasma/5.12' 2018-03-06 09:26:19 +05:30
Bhushan Shah
3fa287280b Fix the build on armhf/aarch64
Summary:
qopengl.h redeclares the functions defined in the epoxy/gl.h and it
results in the build error. this is similar to other .cpp files where
epoxy/gl.h is used.

See: https://build.neon.kde.org/job/xenial_unstable_plasma_kwin_bin_armhf/157

Reviewers: #plasma, graesslin

Reviewed By: #plasma, graesslin

Subscribers: plasma-devel, kwin, #kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D10762
2018-03-06 09:25:33 +05:30
Fabian Vogt
9e32829f43 Merge branch 'Plasma/5.12' 2018-03-05 21:58:18 +01:00
Fabian Vogt
68a2ec5d63 Convert EffectView to a QQuickWidget
Summary:
The Qt Wayland support for subsurfaces is broken in many ways, producing
graphical glitches and crashes:
https://bugreports.qt.io/browse/QTBUG-54888 for instance.

Using a QQuickWidget instead of a QQuickView avoids those issues, with
the additional benefit of a nicer API.

Test Plan:
Opened the KCM with kcmshell and systemsettings, no subsurfaces used
anymore.

Reviewers: #plasma, graesslin, davidedmundson

Reviewed By: #plasma, graesslin, davidedmundson

Subscribers: kwin, plasma-devel, #kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11066
2018-03-05 21:57:33 +01:00
Martin Flöser
e71460b6fc Merge branch 'Plasma/5.12' 2018-03-05 19:32:48 +01:00
Martin Flöser
e1afef3d45 Sanity check WindowQuad before trying to create a grid out of it
Summary:
When one uses:
 * breeze as of 5.12
 * wobbly windows
 * shaded window
 * a distribution building with assert enabled

and starts to move a shaded window, KWin asserts. The root cause for
this is that WindowQuad::makeSubQuad has an assert for y1 being smaller
than y2. With the combination listed above this is not guaranteed. For
the left shadow quad the y1 and y2 are identical and thus trying to
split it, results in the assert condition.

The problem of the shadow quad having an invalid size might be addressed
as well with D10811. Due to that the generation of the quads is not
touched. Instead a sanity check is introduced to not try to split
already invalid sized quads.

BUG: 390953
FIXED-IN: 5.12.3

Test Plan: Added unit test hit the assert, now doesn't hit it any more

Reviewers: #kwin, #plasma

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11015
2018-03-05 19:31:51 +01:00
Fabian Vogt
b1bffa4458 Fix typo in config group name
Summary: Quickly fix it before anyone relies on this typo.

Test Plan: None. Yes, really untested.

Reviewers: #plasma, graesslin, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: kwin, plasma-devel, #kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11047
2018-03-05 13:03:20 +01:00
Martin Flöser
7a9c805b2a [kcmkwin] Re-enable detect button for window rules
Got disabled in 5.12 branch, but is functional in master.
2018-03-04 16:32:20 +01:00
Martin Flöser
231e17f791 Drop invalid .moc file inclusion 2018-03-04 16:10:18 +01:00
Martin Flöser
88b9de04ed Merge branch 'Plasma/5.12' 2018-03-04 09:43:38 +01:00
Martin Flöser
6d6576f819 [kcmkwin/rules] Disable detect button on Wayland
Summary:
The detect functionality is still extremely bound to X11 and results in
a crash when clicked. Thus it's better to disable it completely in 5.12
on Wayland.

Test Plan: Button disabled on Wayland, enabled on X11

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D10642
2018-03-04 09:43:03 +01:00
Martin Flöser
2ea5153e1c Don't crash if the cursor theme fails to create
Summary:
If the cursor theme failed to create KWin crashed due to an endless
recursion. There are two reasons for this fault:
1) When the physical size does not exist we perform a division by 0
which results in an invalid size going into wl_cursor_theme_load
2) We emit the signal that the cursor theme changed even if it didn't
change thus creating an endless recursion

This change addresses both problems: it checks that the size is not 0
and changes the handling for theme update to only destroy the previous
theme if the new theme could be created and only emits the signal if
things change.

BUG: 390314
FIXED-IN: 5.12.3

Test Plan: Added a new test case which crashed with old code

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D10549
2018-03-04 09:42:27 +01:00
Martin Flöser
b554e54e87 Support modifier mouse/scroll action on internal decorated windows
Summary:
This fixes the problem that alt+lmb did not start unrestricted move
resize for the Debug Console.

BUG: 374880
FIXED-IN: 5.12.3

Test Plan: New test case and manual testing whether alt+lmb/rmb works

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D10440
2018-03-04 09:41:38 +01:00
l10n daemon script
da99315b17 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-03-03 05:32:16 +01:00
Fabian Vogt
067274151f Explicitly include <QAction> to fix build with Qt 5.11 2018-03-01 09:34:21 +01:00
Fabian Vogt
e7dae04819 Explicitly include <QAction> to fix build with Qt 5.11 2018-02-28 19:02:33 +01:00
Martin Flöser
41d97e9caa Merge branch 'Plasma/5.12' 2018-02-27 19:32:58 +01:00
Martin Flöser
e9c72e4e62 [autotests] Set breeze icon theme name in integration tests
This is an attempt to get some tests failing on the CI due to not
finding icons fixed. See T8082
2018-02-27 18:17:53 +01:00
Martin Flöser
1d71292e13 Add a method to dbus interface to query information about a window
Summary:
This call is added for the window rules kcm which has a detect
functionality. As that detect functionality cannot query any Wayland
windows we need to have some functionality in KWin core. Furthermore
this allows to simplify the code in the kcm as all the custom X11
interaction can be removed. KWin internally has the functionality to
find a window at a given position.

From a security perspective adding this dbus method is fine as the user
stays in control of the functionality. It requires active click to
select a window.

The new dbus call is already used in the rules kcm replacing the
X11 based detect functionality. That a detect is now able to get
information for both X11 and Wayland windows. So far only X11 windows
on X11 were supported. So this fills an important gap in the Wayland
offerings. It should now be possible to create rules for Wayland
windows (though may not be fully functional).

Test Plan: Run the kwin_rules_dialog and it detected the window correctly

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D10490
2018-02-25 14:12:04 +01:00
Martin Flöser
119c64839d Merge branch 'Plasma/5.12' 2018-02-25 14:11:25 +01:00
Martin Flöser
911176a887 Send hoverLeave or hoverMotion after touch up on decoration
Summary:
On touch down a first hover motion is sent to the decoration. Thus e.g. a
button enters the hovered state. On touch release so far the decoration
did not get a leave event resulting in the button still being hovered.

This change ensures the leave event is sent or if the pointer is also on
the decoration a motion to the pointer position is sent.

BUG: 386231
FIXED-IN: 5.12.3

Test Plan:
New test case and manual testing to verify that the maximize
button is no longer hovered after touch down/up on it

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D10308
2018-02-25 13:54:02 +01:00
Martin Flöser
5795fc8cc0 Init the icon in ShellClient::init
Summary:
If the window never provides the appId, we would not get an icon for
the window. This happens for example for KWin's internal windows which
don't set the app id as KWin also doesn't have a desktop file. With this
change the DebugConsole has a window icon in the decoration.

Test Plan: Extended tests and manual verification of DebugConsole

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D10294
2018-02-25 13:15:17 +01:00
l10n daemon script
4c6e7b9200 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-02-25 07:18:47 +01:00
l10n daemon script
770332dbac 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-02-25 05:32:33 +01:00
l10n daemon script
3d5178a7c6 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-02-22 07:26:39 +01:00
l10n daemon script
e54baa8d73 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-02-22 05:20:00 +01:00
Martin Flöser
a0c91c6e19 Merge branch 'Plasma/5.12' 2018-02-21 18:07:41 +01:00
Martin Flöser
7bf4a94286 Disable window rule configuration for Wayland
Summary:
The window rule detection is too bound to X11 for it to work for
Wayland windows. In fact it results in the config module just crashing.
Thus it's better to just disable the items in the menu. As it's only for
X11 windows we can also enforce platform xcb for the rules dialog.

Test Plan: Menu disabled on Wayland window, menu enabled on Xwayland window

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D10594
2018-02-21 18:06:47 +01:00
Martin Flöser
338c7362c9 Properly handle move during touch events
Summary:
When a window was being moved the touch handling performed the wrong
interaction. Due to that it was possible to move the window, but KWin
did not enter the correct code paths, thus quick tiling was for example
not functional.

BUG: 390113
FIXED-IN: 5.12.3

Test Plan: New test case added and manual test in nested KWin

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D10431
2018-02-21 18:06:00 +01:00
Jonathan Riddell
b5e8694fdf Update version number for 5.12.2
GIT_SILENT
2018-02-20 13:44:25 +00:00
Martin Flöser
0886051622 [autotests] Add test case for decoration default mode
I incorrectly assumed we have a bug when no mode is requested. The test
case shows it works correctly.
2018-02-19 22:10:17 +01:00
Vlad Zagorodniy
ddd406dfd9 [effects] replace old slide effect with a new one
Summary:
The new slide effect tries to separate each virtual desktop
as much as possible. This separation makes the new slide
effect more intuitive than the old one.

Test Plan:
* switch between virtual desktops
* or, move a window to another virtual desktop

Reviewers: #vdg, #kwin, #plasma, graesslin, ngraham

Reviewed By: #kwin, #plasma, graesslin

Subscribers: mart, graesslin, abetts, ngraham, plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D9638
2018-02-16 06:09:27 +02:00
Marco Martin
8a2b9a014f check for EGL_KHR_platform_gbm extension as well
Summary:
some drivers, like Mali have EGL_KHR_platform_gbm
but not EGL_MESA_platform_gbm

Test Plan: pending a test on rock64 board

Reviewers: #kwin, #plasma, davidedmundson, graesslin

Reviewed By: #kwin, #plasma, graesslin

Subscribers: graesslin, garg, davidedmundson, plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D10346
2018-02-15 19:33:06 +01:00
Alex Nemeth
627b11ce49 Added missing image format
Summary:
`QImage::Format_ARGB6666_Premultiplied` was missing from the image format table.
This might have caused some bugs later on.
See: http://doc.qt.io/qt-5/qimage.html#Format-enum

Reviewers: fredrik, #kwin

Reviewed By: fredrik

Subscribers: cfeck, kwin, #kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D10497
2018-02-14 23:23:19 +01:00
Alex Nemeth
cc0325af41 Added noise blur effect
Summary:
Added the option to turn on noise behind the blurred area.
The lowest strength value disables it completely, so it is optional and is disabled by default.

Test Plan:
Edit: this new screenshot shows the updated noise generation.
Edit2: separated the screenshots so you can flick through them to clearly see the differences

{F5694024}

{F5694031}

{F5694025}

{F5694028}

Reviewers: #kwin, #vdg, fredrik

Reviewed By: #vdg, fredrik

Subscribers: davidedmundson, matheusm, romangg, ivan, zzag, ngraham, kwin, #kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D10281
2018-02-14 00:13:08 +01:00
Jonathan Riddell
28c79bd446 Update version number for 5.12.1
GIT_SILENT
2018-02-13 13:14:16 +00:00
l10n daemon script
bdf1845342 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-02-12 07:04:02 +01:00
Martin Flöser
a0aef86a74 Add test case for force opacity rules on ShellClient
This is the first test for force rules. As those cannot be set through
the temporary rules message the rulesrc must be modified. To support this
RuleBook gained a setConfig method.

To my positive surprise the rules already work as intended.
2018-02-11 18:29:26 +01:00
l10n daemon script
8c74b793e0 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-02-11 07:09:43 +01:00
l10n daemon script
ca5747c094 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-02-11 05:09:38 +01:00
Martin Flöser
137b954add Remove remaining HAVE_INPUT ifdef sections
Somehow they sneaked in between creating the patch for making libinput
mandatory and pushing the patch.
2018-02-10 20:36:43 +01:00
l10n daemon script
7a60008ff9 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-02-10 06:56:29 +01:00