Commit graph

26449 commits

Author SHA1 Message Date
Vlad Zahorodnii
3e4c2b3ec8 Introduce Window::interactiveMoveResizeAnchor
This provides the grab point that controls the interactive move resize
operation. It can be used outside Window::handleInteractiveMoveResize()
to position XdgToplevelWindow when a configure event is acked.
2024-03-15 18:00:52 +00:00
Vlad Zahorodnii
5d313fdd7b Document Window::interactiveMoveOffset() 2024-03-15 18:00:52 +00:00
Vlad Zahorodnii
2d5a69b1d2 autotests: Add skip switcher/pager/taskbar tests in X11WindowTest 2024-03-15 17:16:27 +00:00
Méven Car
aa465efa51 wayland: DrmLeaseDevice, use Q_OBJECT macro
BUG: 483008
2024-03-15 17:31:25 +01:00
l10n daemon script
1655d6bbc7 GIT_SILENT Sync po/docbooks with svn 2024-03-15 01:38:30 +00:00
Yifan Zhu
e68ac506af plugins/shakecursor: reset detector on mouse press
A sequence of mouse moves shouldn't trigger the effect if the user
presses any mouse button during the mouse moves.
2024-03-14 21:49:33 +00:00
Aleix Pol
ac9b9a6772 buttonrebinds: Introduce tests
Should help make sure the rebind feature stays working.
2024-03-14 14:39:00 -07:00
Yifan Zhu
b8a59d0bd9 plugins/buttonrebinds: choose keysym based on KeypadModifier status
Use keysyms from the keypad if and only if KeypadModifier is set.
2024-03-14 14:37:19 -07:00
Yifan Zhu
6c4551ff46 plugins/buttonrebinds: remove modifiers before keysym conversion
QXkbCommon::toKeysym can't handle modifiers in key.

CCBUG: 482847
2024-03-14 14:37:19 -07:00
Vlad Zahorodnii
0b4c6f8b3b autotests: Reduce amount of boilerplate code in X11 window test 2024-03-14 21:27:05 +00:00
Xaver Hugl
c7b9376ccc backends/drm: support hardware rotation with direct scanout
This improves latency and power use for fullscreen windows when the output
is rotated
2024-03-14 21:36:16 +01:00
Xaver Hugl
d6ad0bcc20 backends/drm: remove remnants of hardware rotation with compositing 2024-03-14 21:36:16 +01:00
Vlad Zahorodnii
acb4945cd3 autotests: Add more basic X11 window tests 2024-03-14 18:36:41 +00:00
Vlad Zahorodnii
9ee6b57d69 plugins/shakecursor: Fix blocking direct scanout
Effects are active by default.
2024-03-14 01:50:22 +00:00
l10n daemon script
9a0471a6d5 GIT_SILENT Sync po/docbooks with svn 2024-03-14 01:39:36 +00:00
Natalie Clarius
a28676666a doc/windowbehavior: Remove removed "Active screen follows mouse" option
Leftover from commit e7d6e8b2
2024-03-12 23:54:17 +01:00
Vlad Zahorodnii
fa4635e570 x11: Fix interactive move offset
Only the y component has to be divided by height(), not the whole QPointF()
expression.
2024-03-12 23:56:26 +02:00
Xaver Hugl
b2babac3d0 dpmsinputfilter: don't wake up the screen on media or volume key events
It's pretty unexpected that the key press would be ignored and instead the screen
wakes up
2024-03-12 16:11:33 +01:00
l10n daemon script
09049954b9 GIT_SILENT Sync po/docbooks with svn 2024-03-12 01:21:12 +00:00
Xaver Hugl
3a55351211 plugins/screencast: fix the cursor being offset after changing the scale
When the scale of a screen is changed, the cursor parameters have to be
adjusted or the client will render it offset to the actual cursor
2024-03-11 23:46:51 +01:00
Vlad Zahorodnii
2c7301b3ee Make Window::interactiveMoveOffset() relative
Window::interactiveMoveOffset() stores the move offset in pixels, but it
is somewhat annoying to deal with when the window size changes, for example
when the window is unmaximized.

This change makes Window::interactiveMoveOffset() store a ratio where
the move offset can be found. This simplifies the code a bit and fixes
the cursor jumping to the topleft window corner. Although there are other
glitches.

CCBUG: 449105
2024-03-11 20:16:10 +00:00
Xaver Hugl
656313455b backends/drm: work around amdgpu vrr cursor bug differently
Instead of not-delaying cursor updates with adaptive sync, this forces a
software cursor instead. That way, the functionality works the same on all
the vendors.

For testing potential driver fixes, the environment variable
KWIN_DRM_DONT_FORCE_AMD_SW_CURSOR=1 can be used to disable this workaround
2024-03-11 19:56:43 +00:00
Yifan Zhu
380795423d xkb: always update keysym
Previously m_keysym was only updated on key press. This caused issues
when multiple keys are pressed at the same time. E.g., if the user
presses A, presses B, releases A, releases B, the actual events sent by
kwin was A pressed;  B pressed; B released; B released.

Also call xkb_state_update_key after xkb_state_key_get_one_sym, as
recommended by the libxkbcommon documentation
2024-03-11 15:29:02 +00:00
Yifan Zhu
92d29ed7f0 kcms/screenedges: add keywords for edge/corner barriers 2024-03-11 15:11:06 +00:00
Yifan Zhu
681752ada1 xkb: fix testing if on keypad
XKB_KEY_KP_9 is 0xffb9 while XKB_KEY_KP_Equal is 0xffbd and XKB_KEY_F1
is 0xffbe. So XKB_KEY_KP_Equal, instead of XKB_KEY_KP_9, has the maximum
keysym for keypad keys.
2024-03-11 07:47:58 -07:00
Marco Martin
609833e880 Properly intersect the shape with clipRect
That for loop in the end didn't have any effect,
actually compute the final region and return that one
2024-03-11 11:56:21 +00:00
David Edmundson
9302e84b95 wayland: Revert send pointer leave on drag
This was changed to match the behaviour of other compositors.
However what kwin did before is more sensible.

Sending a leave event breaks cursor updates by design. See
https://gitlab.freedesktop.org/wayland/wayland/-/issues/444
2024-03-11 11:32:35 +00:00
David Edmundson
044c9f0154 wayland: Only send artificial mouse up events for xwayland drags
Seat has to handle two types of drags; ones where clients are updated
through data device, and xwayland version where the drag target has
mouse events sents as pointer events. A mechanism to treat them
differently was introduced, but this former xwayland hack was not
included. We also don't need to send frame events when in datadevice
mode.

This reset of pointer state breaks electron.
2024-03-11 11:06:35 +00:00
Vlad Zahorodnii
4d659998d4 autotests: Make cursor-shape-device-v1 factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
Vlad Zahorodnii
46f3c8509c autotests: Make auto-hide-screen-edge-v1 factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
Vlad Zahorodnii
a887b737ef autotests: Make idle-inhibitor-v1 factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
Vlad Zahorodnii
2922b8d0a7 autotests: Make xdg-toplevel-decoration-v1 factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
Vlad Zahorodnii
b4e2241ded autotests: Make factional-scale-v1 factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
Vlad Zahorodnii
8a11dde6f2 autotests: Make input panel surface factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
Vlad Zahorodnii
98f0af0bc1 autotests: Make wl-subsurface factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
Vlad Zahorodnii
f723b11a9a autotests: Make layer shell surface factory function return a std::unique_ptr 2024-03-11 08:52:10 +00:00
l10n daemon script
ad747daf4f GIT_SILENT Sync po/docbooks with svn 2024-03-11 01:20:58 +00:00
Vlad Zahorodnii
670c71f11e Don't block interactive moves by sync requests
The compositor doesn't need to synchronize with the client when moving
windows, except cases like unmaximizing the window. It's needed only
when resizing to avoid overwhelming the client with configure notify events.
2024-03-10 19:07:02 +00:00
Vlad Zahorodnii
93326f3e50 Revert "plugins/zoom: Port to CursorItem"
This reverts commit e40f632c9b.

It broke non default mouse tracking modes. There are just too many
options, so revert the change instead.
2024-03-10 17:44:25 +00:00
Vlad Zahorodnii
af7388c8a3 autotests: Port xdg-shell factory functions to unique_ptr 2024-03-10 17:25:52 +00:00
Vlad Zahorodnii
3f6a4eb1ea plugins/shakecursor: Mark it as internal
The accessibility kcm can be used to enable/disable the shake cursor
plugin and change its other parameters, so hide it in the desktop
effects kcm by default.
2024-03-10 17:12:55 +00:00
Vlad Zahorodnii
47829e6ac3 Remove isWaitingForInteractiveMoveResizeSync() check when interactively moving a window
There's already a check at the start of the function. Although interactive
moves don't need to be synchronized with the client, in general.
2024-03-10 10:43:03 +00:00
l10n daemon script
6435adc9d8 GIT_SILENT Sync po/docbooks with svn 2024-03-10 01:38:05 +00:00
Kristen McWilliam
0bfe7e150a scripting/workspace_wrapper: improve readability
Adds whitespace between documented members of the header file.

Currently the members are all bunched together, making it difficult to
read as one flows directly into the next. This change adds a newline
between each member, making it easier to read.
2024-03-10 01:17:17 +00:00
l10n daemon script
422b6c4f0d 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"
2024-03-10 01:13:49 +00:00
Xaver Hugl
0360ce38e2 core/colorspace: fix ColorDescription comparisons
They used the sdr gamut wideness (which should've been removed) instead of
the sdr colorimetry

BUG: 482809
2024-03-09 15:57:36 +01:00
Vlad Zahorodnii
277701e99f scene: Inherit scene from the parent item
It makes Item API more ergonomic.
2024-03-09 11:18:21 +00:00
l10n daemon script
c1311abfc1 GIT_SILENT Sync po/docbooks with svn 2024-03-09 01:26:57 +00:00
l10n daemon script
05dc255048 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"
2024-03-09 01:15:34 +00:00
Yifan Zhu
2e5d3253d4 screenedge: allow creation between screens on wayland
Allow the creation of screen edges bordering two screens. This allows
panels in auto-hide/dodge-windows mode to work when the panel is
positioned between two edges.

Don't change the X11 behavior since edge barrier is not supported on
X11, without which it is virtually impossible to exactly position the
cursor on the pixel to activate the edge.

BUG: 351175
2024-03-08 12:03:28 -08:00