Commit graph

24495 commits

Author SHA1 Message Date
Dominique Hummel
0ca7b40da0 tiling: Evacuate tiled windows from custom & quick tiling on output removal
Context: If a display is removed, the corresponding TileManager is removed with it. This in turn removes every one of its Tiles with it, and when a Tile's destructor is called, it attempts to find a new replacement tile for any windows it was previously managing.

However, if the Tile is removed because its corresponding TileManager has been removed, this has the potential to cause a segfault in KWin, causing it to crash (I suspect a possible race condition? but not sure).

This MR correctly evacuates custom tiled windows & migrates quick tiled windows upon output removal.

BUG: 465522
2023-02-14 12:03:40 +00:00
l10n daemon script
fbed3d2d69 GIT_SILENT Sync po/docbooks with svn 2023-02-14 02:24:34 +00:00
Natalie Clarius
127ae4b556 useractions: rename shortcuts 'window to screen' -> 'move window to screen' 2023-02-13 15:52:38 +00:00
Vlad Zahorodnii
f71ee59a37 Port away from Cursor::setPos()
Use input device specific apis to change the position of the cursor. The
main reason to do so is to break the assumption that Cursor position is
the same as pointer position, which I would like to rely on later to
merge tablet and pointer cursors.
2023-02-13 14:17:10 +02:00
Vlad Zahorodnii
160cc98597 wayland: Fix a typo in DataControlDeviceV1Interface::sendPrimarySelection()
interfaceVersion() is not the same as the resource version.
2023-02-13 13:16:50 +02:00
David Edmundson
d084629f3c wayland: Version check before send_primary_selection calls
This is only in v2

BUG: 465657
2023-02-13 09:38:24 +00:00
l10n daemon script
a9dd78e246 GIT_SILENT Sync po/docbooks with svn 2023-02-13 02:19:58 +00:00
Andreas Cord-Landwehr
4c2952a533 Add missing cmath include for std::ceil 2023-02-12 12:12:46 +01:00
Andreas Cord-Landwehr
80b5deb032 Include missing header for std::round 2023-02-12 12:00:37 +01:00
Andreas Cord-Landwehr
484d2da046 Set CXX standard for crossbuilding utility 2023-02-12 08:54:42 +01:00
l10n daemon script
150137b299 GIT_SILENT Sync po/docbooks with svn 2023-02-12 02:18:38 +00:00
Vlad Zahorodnii
a1a09e91ab plugins/screencast: Simplify projection matrix code in window source
Split orthographic matrix construction and y inversion in two steps to
improve code readability.
2023-02-11 12:48:24 +00:00
Vlad Zahorodnii
83c38b0907 Drop Window.screen property
Use Window.output instead.
2023-02-11 12:16:46 +02:00
Vlad Zahorodnii
37f4199b19 scripting: Drop clientArea(area, QPoint, VirtualDesktop) overload
Use Workspace.screenAt() to look up the output instead.
2023-02-11 09:49:28 +00:00
Vlad Zahorodnii
fa2b854ee4 scripting: Switch to Output 2023-02-11 09:49:28 +00:00
l10n daemon script
379e813bdd GIT_SILENT Sync po/docbooks with svn 2023-02-11 02:18:30 +00:00
l10n daemon script
3b391c9f67 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"
2023-02-11 01:59:50 +00:00
Vlad Zahorodnii
60db5637b4 plugins/screencast: Simplify y inverted handling
dmabuf buffers have the origin in the top left corner, so a texture with
attached dmabuf must have y inverted.

By correctly specifying the y inverted flag, we could leverage existing
infrastructure in kwin to handle vertically mirrored textures and make
simpler some projection matrix code in screencasting.
2023-02-10 15:16:40 +00:00
David Redondo
cc4d99aea4 Fix button to Qt::MouseButton mapping
Even though the names seem to match, QtWayland maps button values
to enum values in ascendung order (as it does on X11). The wrong
mapping is usually not a problem because we send the native button
events to clients. However when the Qt names or values are used
for communication between KWin and a client this leads to
misunderstandings.
BUG:465463
FIXED-IN:5.27.1
2023-02-10 09:27:37 +00:00
l10n daemon script
e909234244 GIT_SILENT Sync po/docbooks with svn 2023-02-10 02:26:21 +00:00
l10n daemon script
9aad886729 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"
2023-02-10 02:01:56 +00:00
Xaver Hugl
815269a26f backends/drm: set cursor again after it was hidden
This isn't necessary with atomic modesetting, as moving and setting are
the same thing. With legacy though, if the cursor was hidden, moving it
with the layer visible does not automatically show it again, so that needs
to be done explicitly

BUG: 461181
2023-02-09 22:35:44 +00:00
Ismael Asensio
1b75d4b71a kcms/rules: Change opacity defaults to 100%
This has the benefit of providing a saner default for the values
of `opacityActive` and `opacityInactive` rule properties, both
in the UI and when reading the config.

The side effect is the same we have when changing default values:
if someone would have set a rule with some opacity to 0%, it will
be read as 100% next time kwin starts.

In this case it is a small price, as it is always easier to change
it back when the windows are visible that restoring it when they're
not, specially if it wasn't voluntary.
2023-02-09 22:41:39 +01:00
Natalie Clarius
0b2c442196 kcms/rules: add warning for low opacity
Once upon a time, in a moment of acute stupidity, I accidentally created a window rule making all windows completely transparent. I meant to go for 0% transparency when really the slider said 0% opacity. And once you've made the very window to change this setting invisible, the only way to fix that mistake is to log into a TTY or different DE and find the config file to edit manually. Since I've since seen several KRedditors fall into the same trap:  

Show a warning when active or inactive opacity is set to ~~<= 15%~~ < 25%.

![warning](/uploads/0b1178bf5782bff3b4293a0031bb4fca/warning.png)
2023-02-09 21:36:24 +00:00
Vlad Zahorodnii
e1e9e89f34 wayland: Remove SeatInterfacePrivate::accumulatedCapabilities
The seat no longer posts the relevant protocol error.
2023-02-09 20:15:55 +02:00
David Edmundson
e0c66d42cb Match pointer/keyboard/touch lifespan to Seat lifespan
PointerInterface is a "Server-managed multicasting resource". As in we
have one QObject, managed by the server, but internally it represents
multiple resources from various clients.

We cannot control the lifespan of those resources, they may persist long
after we stop having these capabilities on the seat.

If we delete our pointer object when we stop advertising a pointer
capability we have race conditions with clients calling release, or
potentially even having a seat_get_pointer in flight.

It's easier and safer just to have PointerInterface last as long as the
Seat. If we don't have a mouse no-one should try to bind, and even if
they did or remained bound long after we stop having a mouse it won't do
any harm as there are no mouse events to broadcast.
2023-02-09 16:36:24 +00:00
Aleix Pol
1a9ab2d46e screencast: Fix region screencasts top coordinate
We don't need to invert the top as the ortho already is on the correct coordinate
space.

Thanks to Dominique Hummel for helping debug the issue!
2023-02-09 15:09:19 +01:00
Aleix Pol
4078fcab2b screencast: Error out if we request a region without outputs
It makes for a bad development experience and I don't see a good use case
for it right now. If it existed, we can always make sure it works.
2023-02-09 15:09:19 +01:00
l10n daemon script
852d10ddd7 GIT_SILENT Sync po/docbooks with svn 2023-02-09 02:41:48 +00:00
l10n daemon script
88d9a772fc 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"
2023-02-09 02:07:11 +00:00
Vlad Zahorodnii
3e9804215f Port Outline to org.kde.kwin 3.0
The outline has been overlooked.
2023-02-08 20:12:20 +02:00
Vlad Zahorodnii
f731a8e9cf x11: Remove unused signals 2023-02-08 14:47:26 +02:00
David Edmundson
fbb71f9c0b XWayland: Don't dispatch xwayland events in QAbstractEventDispatcher sleeps
QAbstractEventDispatcher blocks and waits constantly on every external event
processed; every timer or update from an X or wayland client, mouse
move or DRM event.

Right now every time this happens we go and check Xwayland for new
events, this is a system call (poll) that based on strace will
unsurprisingly immediately return with EAGAIN as there's nothing to read
from X. If there is something to read our socket notifier will fire. On block we do still need to read any events read in the meantime that weren't dispatched.

This cuts down our system calls significantly, which hopefully should have a
noticeable impact on performance especially when the kernel is under
load.

---

Found whilst analysing strace (by accident whilst looking for something else!)

In a simple case of xwayland nested running glxgears we go from 28 calls per frame to 21. With many many clients and more input events it'll be an even higher percentage.
2023-02-08 10:34:20 +00:00
l10n daemon script
d983b78107 GIT_SILENT Sync po/docbooks with svn 2023-02-08 03:29:52 +00:00
l10n daemon script
608fbbfa32 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"
2023-02-08 02:07:04 +00:00
Vlad Zahorodnii
7c1d188747 scripting: Remove unnecessary x11window.h include 2023-02-07 21:54:39 +00:00
Vlad Zahorodnii
6de388c79c scripting: Make workspace.getClient() return Window 2023-02-07 21:54:39 +00:00
Vlad Zahorodnii
09fd29dccc scripting: Remove unrelated signals
The current state is inconsistent. Some window-specific signals are
exposed in the workspace, some not.

This change drops those signals. One should monitor the signals it's
interested in instead.
2023-02-07 21:54:39 +00:00
Vlad Zahorodnii
7fd7c07b30 scripting: Remove noop signals 2023-02-07 21:54:39 +00:00
Vlad Zahorodnii
93c1a610bc scripting: Remove X11 specific signals 2023-02-07 21:54:39 +00:00
Vlad Zahorodnii
452bb20741 Drop Workspace::{oldDisplayWidth,oldDisplayHeight}
They're unused.
2023-02-07 21:34:07 +00:00
Vlad Zahorodnii
77bf51c3b5 effects/overview: Drop "blur background" option
The blur effect is used to improve the contrast. The option was added
thinking "why not? it might be useful." This was perhaps a mistake and
it should have been added with a clear valid usecase in mind.

CCBUG: 457495
2023-02-07 19:36:20 +00:00
Vlad Zahorodnii
a3748b8e48 effects: Drop EffectWindow::(un)referencePreviousWindowPixmap 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
89283c4cc6 effects: Drop support for effect proxy'ing
It's not used by any effect. We use other means to share functionality
between effects now.
2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
66837f7cce effects: Remove deprecated feature enums 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
909e10dace effects: Drop PAINT_DISABLED_BY_TAB_GROUP 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
65f4313e04 effects: Drop EffectWindow::geometry 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
4f44c28032 effects: Drop EffectWindow::isCurrentTab 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
20487c7cda effects: Drop legacy EffectsHandler::desktopChanged overloads 2023-02-07 18:10:52 +02:00
Vlad Zahorodnii
522e2ee7c4 effects: Drop EffectWindow::desktop() 2023-02-07 18:10:52 +02:00