Commit graph

18150 commits

Author SHA1 Message Date
Vlad Zahorodnii
ec5a0249e2 [x11] Hold a passive grab on buttons only when needed
Due to a bug in the XI2 protocol, clients have to reset scroll valuators
on XI_Enter because the scroll valuators might have changed while the
pointer was elsewhere. The XI_Enter event is usually sent when an input
device enters the window, but it can also be generated by a passive grab.

If an XI_Enter event has been generated by a passive grab, the client
should not reset scroll valuators. Unfortunately, there is no any
reliable way for the client to determine if an XI_Enter event has been
sent in response to a deactivated passive grab. A correct fix for the
scroll issues in GTK apps would involve changes in the XI2 protocol.

As a work around, we can hold a passive grab only if the current mouse
wheel action is either "Activate and scroll" or "Activate, raise, and
scroll."

BUG: 394772
FIXED-IN: 5.19.3
2020-06-24 13:48:54 +00:00
Méven Car
61b55732ae Tests: Add outputmanagement to test helper 2020-06-24 11:17:42 +02:00
Cyril Rossi
170741c499 KCM KWin Decoration : kcfgc File attribute should point to kcfg file
BUG: 423398
FIXED-IN: 5.19.3
2020-06-24 09:48:40 +02:00
Vlad Zahorodnii
ad73e13478 [wayland] Switch to SurfaceInterface::bufferScale()
SurfaceInterface::scale() has been renamed to SurfaceInterface::bufferScale().
2020-06-24 06:59:15 +00:00
Chris Holland
e1b5fc9fac The old behavior before D28224 was (X + Y) instead of (X + X) 2020-06-24 06:54:44 +00:00
Aleix Pol
e459c8bf54 No need to recalculate the matrix if yInverted doesn't change 2020-06-23 14:58:48 +02:00
Jonathan Riddell
c1b1fb0b21 Update version number for 5.19.2
GIT_SILENT
2020-06-23 11:18:17 +01:00
David Edmundson
34c1bccdb7 Fix build with loadThemeCursor templates
WaylandCursorImage::loadThemeCursor(const T &shape) uses templates.
These templates are used by input.cpp but the deifnition is in
pointer_input.cpp

On some setups this creates a compilation problem.

This patch introduces an explicit non-templated declaration with the
defintion explicitly complied into the same class.

In master this has been refactored away anyway, so this is a minimal
patch to make things working in the least invasive way.

BUG: 423052
2020-06-22 16:51:38 +01:00
Nate Graham
2af16f1ee0 Merge branch 'Plasma/5.19' 2020-06-22 07:49:27 -06:00
Aleix Pol
e1bf133de7 Fix support for systems with age disabled
If no damage is supported, repaint all the output rather than nothing.
2020-06-22 09:46:27 +00:00
Benjamin Port
a8979aa4e4 KCM Compositing: Fix save state
use settings objects to track state instead of a class member that will need to be synchronized.

BUG: 423223
2020-06-22 09:24:11 +02:00
l10n daemon script
b5040fe425 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"
2020-06-20 07:42:21 +02:00
l10n daemon script
7a30443322 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"
2020-06-20 05:13:31 +02:00
David Edmundson
c567d51749 Apply suggestion to xdgshellclient.cpp 2020-06-19 08:56:14 +00:00
David Edmundson
3f1fb873dd Apply suggestion to xdgshellclient.cpp 2020-06-19 08:56:14 +00:00
David Edmundson
e02fe34e17 [wayland] Avoid debug recursion in XdgShellClients
QDebug& operator<<(QDebug& stream, TopLevel*)
calls TopLevel::debug(stream)

So our implementation has to provide something custom not call the base
class.

Debug here is loosely based on X11Client. It probably can be expanded on
in time, but at least it won't crash.
2020-06-19 08:56:14 +00:00
David Edmundson
9bc65e8151 [autotests] Update PlasmaSurfaceTest to match recently changed behaviour
0c9e481577 changed the layer of
WindowsGoBelow. The relevant unit test was not updated.
2020-06-19 08:44:29 +00:00
David Edmundson
494b67d610 [autotests] Fix quick tile autotest race condition
We send two async actions via another process
We do a wait for one
We check that we received two events

This is racey. QTRY_COMPARE can allow both events to arrive separately.
2020-06-19 08:28:45 +00:00
Vlad Zahorodnii
4a681e3d47 [scene] Discard quads when the surface-to-buffer matrix is changed
The surface-to-buffer matrix provides a generic mechanism for mapping
things from the surface-local coordinate space to the buffer coordinate
space. If it changes, we know for sure that the texture coordinates
have to be re-computed.
2020-06-19 06:45:33 +00:00
Méven Car
1d34d29222 Merge branch 'Plasma/5.19' 2020-06-18 12:30:16 +02:00
Méven Car
396a9da557 KCMoptions: delay initialization after QObject creation in standalone
BUG: 423111
FIXED-IN: 5.19.2
2020-06-18 12:15:18 +02:00
Vlad Zahorodnii
23113d38c6 Update cached client size when the client geometry has changed
The usage of geometryShapeChanged() is highly discouraged because it is
emitted when geometry of any kind has been changed, e.g. buffer geometry,
frame geometry, etc.

This change ports DecoratedClientImpl to the clientGeometryChanged()
signal, so the cached client size will be updated only after the client
geometry has actually changed.
2020-06-18 07:40:58 +00:00
Vlad Zahorodnii
cc3eb54b32 Introduce the client geometry in Toplevel
In most cases, we don't need to react to client geometry changes, but in
code that deals with server-side window decorations, we need to react to
client geometry changes. The problem is that frame and client geometry
updates are not correlated even though there is a connection between the
frame geometry and the client geometry.

This change introduces the client geometry in the Toplevel class in order
to allow monitoring client geometry updates from DecoratedClientImpl.
2020-06-18 07:40:58 +00:00
Vlad Zahorodnii
68ec39f433 [xwayland] Ensure that DataBridge is initialized prior to PropertyNotify
Since WaylandCursorImage no longer flushes the internal connection
connection and dispatches events, the DataBridge must do it to ensure
that the selections are initialized prior to receiving a ProperyNotify
event.
2020-06-18 07:14:58 +00:00
Vlad Zahorodnii
cb7a9456c0 [wayland] Rework Xcursor theme loading code
Currently in order to load an Xcursor theme, kwin uses libwayland api,
which looks really awkward because of the way how the compositor talks
to itself via the internal connection.

The main motivation behind this change is to limit the usage of kwayland
client api in kwin.
2020-06-18 07:14:58 +00:00
Vlad Zahorodnii
317bc74c86 [wayland] Simplify WaylandCursorImage
Cached cursor lookup tables aren't used anywhere so drop relevant methods
that populate those tables in order to make the code simpler.
2020-06-18 07:14:58 +00:00
l10n daemon script
f3356b1f4f 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"
2020-06-18 09:05:32 +02:00
l10n daemon script
430ca2a33e 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"
2020-06-18 08:32:20 +02:00
l10n daemon script
c10fe06d06 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"
2020-06-18 05:44:57 +02:00
l10n daemon script
da239b2006 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"
2020-06-17 17:28:29 +02:00
Vlad Zahorodnii
f79d4ba05f Merge branch 'Plasma/5.19' 2020-06-17 18:07:23 +03:00
Vlad Zahorodnii
cff2070ab2 Merge branch 'Plasma/5.18' into Plasma/5.19 2020-06-17 18:07:12 +03:00
l10n daemon script
8027ccd6d6 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"
2020-06-17 16:54:45 +02:00
Vlad Zahorodnii
96774e79e7 [x11] Create egl scene textures with right size
Or client-side decorated clients will be rendered incorrectly.
2020-06-17 17:52:17 +03:00
l10n daemon script
0e117c49a1 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"
2020-06-17 14:12:29 +02:00
Vlad Zahorodnii
da6c775d11 Merge branch 'Plasma/5.19' 2020-06-17 11:05:27 +03:00
Vlad Zahorodnii
e26f590dd2 Merge branch 'Plasma/5.19' 2020-06-17 11:04:05 +03:00
Vlad Zahorodnii
bc2df9f84b [x11] Provide physical dimensions for outputs
Since ScreenEdge no longer uses physicalDpiX() and physicalDpiY() from
the QPaintDevice class in favor of our own helpers, we need to ensure
that the X11 platform provides valid output physical dimensions.

BUG: 422816
FIXED-IN: 5.19.2
2020-06-17 10:53:12 +03:00
Méven Car
e3df2e15a6 ScreenshotEffect: Use Service Property to authorize screenshot without confirmation
Summary:
Restrict to process with `X-KDE-DBUS-Restricted-Interfaces=org.kde.kwin.Screenshot` in their corresponding Service file,
 to take screenshots.
Such a program can now take immediate screenshots.

Adds a utility file to group KService related logic.

Needed for D29408

Reviewers: #kwin, apol, davidedmundson, bport, zzag

Reviewed By: #kwin, davidedmundson

Subscribers: ngraham, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D29407
2020-06-16 19:00:04 +02:00
Jonathan Riddell
ed50b1b614 Update version number for 5.19.1
GIT_SILENT
2020-06-16 13:29:52 +01:00
David Edmundson
2c55df788f [wayland] Update to kwayland-server appmenu changes 2020-06-15 10:34:46 +01:00
David Edmundson
7a861d07aa Merge branch 'master' of https://invent.kde.org/plasma/kwin 2020-06-15 10:30:20 +01:00
Ismael Asensio
d9154ef350 Merge branch 'Plasma/5.19' 2020-06-12 16:58:09 +02:00
Nate Graham
87578bfc15 Allow corner-tiling by quickly combining edge tiling shortcuts
Currently the only way for a uuser to invoke corner-tiling is to
manually set shortcuts for them. This patch adds another option: invoke
the existing shortcuts for edge tiling in a combined manner in quick
succession.

For example, hitting Meta+Left and then Meta+Up within a one-second
period will tile the active window into the top left corner. In practice
you hold down the Meta key and then press Left then Up (or Up and then
Left), and I think it feels very natural. Linux Mint's window manager
has this feature and I always missed it when I left Mint for the KDE
world.

Autotests for existing tiling shortcuts are adjusted to not break, and
additional tests for the new tiling options are added.
2020-06-12 13:50:24 +00:00
David Edmundson
83f5362925 [xwl] Fix clipboard clearing after externally changed
1c2f23d31c swapped round things so we
manage a dataSource rather than a dataDevice which may or may not have a
source.

In introduced a bug on clear. We only want to clear the wayland's
clipboard if xwayland owns the current clipboard. Otherwise we reset the
clipboard if some other client sets the selection. There's also no need
to wait for this to go through from our internal client to the server
representation - we can just clear immediately
2020-06-12 09:46:39 +01:00
l10n daemon script
ce5b9c3612 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"
2020-06-11 09:38:33 +02:00
Ismael Asensio
e307038f84 [kcm/kwinrules] Fix slow scrolling through rules list
Every `AbstractItemDelegate` was instantiating a `Kirigami.ActionToolBar`,
which is a very expensive component, rising CPU usage specially on long lists.

Use `Kirigami.SwipeListItem` instead, as is seems the proper component.

BUG: 421537
2020-06-10 21:29:08 +00:00
Alain Knaff
e9c68f36bd [x11] Send a valid timestamp in TakeFocus messages
Kwin sends out undated WM_TAKE_FOCUS client messages. Gtk based
applications such as Firefox react to these by handing focus to one of
their subwindows using XSetInputFocus(), and pass on the null time field
that they received in the client message to XSetInputFocus().

If for whatever reason the application (firefox) is slow to process the
event, it might issue that XSetInputFocus() message at a time when it
has already lost focus to the next application. This results in Firefox
stealing back the focus from the next application. Normally, such an
occurrence would not happen, as the server could tell by the time field
that the message is stale.

Until 2016 (e73e331f35) kwin *used* to
send a valid timestamp, but this got deliberately broken to appease some
Java Applications which were "extremely picky" and would refuse focus.

This was based on the assumption that no other toolkit used the
timestamp from take focus events which is now proven to be false.

ICCCM document states:

Windows with the atom WM_TAKE_FOCUS in their WM_PROTOCOLS property may
receive  a ClientMessage event from the window manager (as described in
section 4.2.8) with WM_TAKE_FOCUS in its data[0] field and a valid
timestamp (i.e. not CurrentTime ) in its data[1] field."

BUG: 421068
2020-06-10 11:11:08 +01:00
Vlad Zahorodnii
c890996a33 [scene] Setup scene window connections with correct receiver object
We need a couple of connections to ensure that the window pixmap, the
window quad cache, and the window shape get discarded when the geometry
of the toplevel has been changed. Currently, those connections are
created with the receiver object being the scene. The problem is that
the associated wayland surface may outlive the toplevel and we don't
cleanup the connections after the scene window has been destroyed.

The fact that the connections don't get destroyed can lead to accessing
dangling pointers, which may result in a crash.

In order to ensure that the connections are broken automatically when
the scene window is destroyed, we need to ensure that the received
object is the scene window. That way, the connections will be destroyed
automatically.
2020-06-10 09:36:55 +03:00
Vlad Zahorodnii
430b63d13b [scene] Rename a scene window method
This change renames invalidateQuadsCache() to discardQuads() because the
latter name is shorter and it aligns with pre-existing method names.
2020-06-10 09:18:32 +03:00