Commit graph

27367 commits

Author SHA1 Message Date
l10n daemon script
99ca6c03d6 GIT_SILENT Sync po/docbooks with svn 2024-08-08 01:31:54 +00:00
l10n daemon script
51b5fa1e74 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-08-08 01:22:12 +00:00
Yifan Zhu
7752db3a88 screenedge: allow activating clients in drag and drop
In particular, this allows dragging onto autohide and dogde-window
panels.

BUG: 450579
2024-08-07 16:29:55 +00:00
Nicolas Fella
9d76423285 Initialize KCrash after setting KAboutData
So that KCrash can report the application version
2024-08-07 14:25:52 +02:00
Vlad Zahorodnii
68a621f95a utils: Rename KXcursorTheme to CursorTheme
The KXcursorTheme type no longer with Xcursor only cursors, so rename it
to maintain more reasonable naming conventions.
2024-08-07 11:57:39 +03:00
Vlad Zahorodnii
266c6ee855 utils: Add support for svg cursors
With this change, KXcursorTheme will be able to load svg cursors provided
by breeze.

If a cursor theme provides both xcursor cursors and svg cursors, the svg
cursors will be preferred.

At the moment, KXcursorTheme doesn't cache svg render results but it could
do that if it becomes a noticeable issue.
2024-08-07 11:57:39 +03:00
Vlad Zahorodnii
e7c1144e2c plugins/shakecursor: Increase max cursor scale
Currently, the embedded cursors have effectively a scale factor of 10.
So they look smooth even though the current maxScale is small. With the
svg cursors, the shake cursor needs to provide more reasonable maxScale
values.
2024-08-07 11:57:39 +03:00
Vlad Zahorodnii
69012002d2 plugins/shakecursor: Drop embedded high resolution version of breeze cursor theme 2024-08-07 11:57:36 +03:00
l10n daemon script
66fd123f61 GIT_SILENT Sync po/docbooks with svn 2024-08-07 01:31:03 +00:00
l10n daemon script
bf273df383 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-08-07 01:22:40 +00:00
David Redondo
31018c000b wayland: Check serial instead of focus for changing selections
Clients can have valid reasons to change the selection when the
same user action that also caused the selection request
to lose keyboard focus. This is notbaly the case for menus
created from a Plasma panel which itself will not take focus
but when clicking on action it only triggers after the menu
is closed.
This also matches what weston and sway do.
BUG:490803
2024-08-06 12:54:00 +00:00
Xaver Hugl
8542c20030 effect/effectwindow: remove decorationInnerRect
It's the same as contentsRect
2024-08-06 12:23:55 +00:00
Xaver Hugl
1fbb742698 plugins/blur: limit app-requested blur to the app surface
It does not make any sense that blur would be extended to the decoration when
the decoration doesn't request it

BUG: 487538
2024-08-06 12:23:55 +00:00
l10n daemon script
bbfffec6d6 GIT_SILENT Sync po/docbooks with svn 2024-08-06 01:32:32 +00:00
Xaver Hugl
ab8f05a57f activation: fix X11 windows being stuck in should_get_focus more properly
amends d01e20b6a9, and adds an autotest for the bug
2024-08-05 23:25:53 +02:00
Yifan Zhu
1240ac1dfe plugins/buttonrebinds: correctly handle level 1 keys
Level 1 keys (e.g., !=Shift+1) need to have shift added.

BUG: 484367
2024-08-05 16:37:32 +00:00
Xaver Hugl
20dc8f1684 plugins: add effect that shows when compositing is active
It just shows "Compositing" in the corner and doesn't block direct scanout.
When direct scanout is active, the "Compositing" text isn't visible anymore.

This is useful for debugging performance or power draw issues.
2024-08-05 15:40:17 +02:00
l10n daemon script
1d9d809dfd GIT_SILENT Sync po/docbooks with svn 2024-08-05 01:30:06 +00:00
l10n daemon script
9cf9cfe325 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-08-05 01:22:28 +00:00
Aleix Pol Gonzalez
d83f6e9a85 backends/wayland: Support touch input when there's multiple outputs
Makes the outputs we are emitting relative to the output position. This
way if there's an esoteric setup or just more than one output, it won't
just always be relative to the first output.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2024-08-04 17:15:21 +02:00
l10n daemon script
29f772cbbb GIT_SILENT Sync po/docbooks with svn 2024-08-04 01:33:01 +00:00
l10n daemon script
44956f6b9c 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-08-04 01:21:53 +00:00
l10n daemon script
2890dd6d2e GIT_SILENT Sync po/docbooks with svn 2024-08-03 01:33:38 +00:00
l10n daemon script
bf39cc5c19 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-08-03 01:21:57 +00:00
Xaver Hugl
ebffcd9dc4 backends/drm: don't block direct scanout if color profile source isn't set to ICC
If there's a valid ICC profile loaded is irrelevant with a different color profile source
2024-08-02 16:14:00 +02:00
Xaver Hugl
1f2e439b66 compositor_wayland: optimize out black background surfaces for direct scanout
If the application uses a surface with a single-pixel black buffer as a background,
for example behind a video or video game, that surface can be ignored, as the KMS
background is black as well.
With this commit, mpv with --vo=dmabuf-wayland can get direct scanout even if the
aspect ratio of the video and screen don't match, which can result in very significant
power savings
2024-08-02 15:56:52 +02:00
Xaver Hugl
70ceed51fc scene/workspacescene: extend direct scanout candidate search to include multiple subsurfaces
This way, for example subsurfaces for black bars behind videos can be scanned out
2024-08-02 15:56:47 +02:00
David Edmundson
8fd4476ff1 wayland: Move XWayland key forwarding into a filter
We optionally send some keys to xwayland through the filter when no x11
client has focus. This allows shortcut handling in X11 apps to work.

When kwin is grabbing keys we don't necessarily want X11 to sniff these
keys as things can get out of sync. A key place is the tabbox. The X11
client sill has focus, but xwayland is not active. This means we pass
tab keys to X which then go to application incorrectly.

Part of this patch changes the tabbox filter to not intercept the alt
key release event. This ensures xwayland's concept of pressed modifiers
stays in sync.

BUG: 484992
2024-08-02 09:31:40 +00:00
Jonathan Riddell
15538c303b Update Qt version requirement to 6.7.0
GIT_SILENT
2024-08-02 10:15:30 +01:00
David Edmundson
6675eccf6d inputmethod: Send pre-defined commit message to client on user interaction
In some IM backends pre-edit text should be submitted on user interaction, in some it should be discarded. 

In TextInputV1 and V2 this was a flag sent to the client along with
the commit string ahead of time.

TextInputV3 does not have a flag for this, so we handle it compositor side.

We flush the text to be committed :
 - when we change keyboard focus, before the current client gets wl_keyboard.leave
 
 - when a mouse is pressed in the relevant surface
 
 - when a key is pressed and the InputMethod doesn't have a grab
 
 - when the InputMethod forwards a key to the client
 (which includes the InputMethod passing on grabbed keys)
2024-08-02 09:07:46 +00:00
Vlad Zahorodnii
1e9b961761 tabbox: Reset keyboard focus when grabbing input
When the tabbox grabs input, the key events won't be sent to the client.
It's not good for a couple of reasons: first, it can fool the client into
repeating a previously pressed key; and the server side and the client
side can be out of sync after the task switcher is dismissed.

In order to handle that properly, this change makes the tabbox reset the
keyboard focus when it's shown or hidden. When the task switcher is
dismissed, an enter event will be sent with the current state of the pressed
keys.

Ideally, the same needs to be done with the pointer focus but it's
challenging to achieve with the current input pipeline design. An input
grab abstraction is needed to handle pointer focus when the task switcher
is active.
2024-08-02 06:10:15 +00:00
l10n daemon script
a6fbff465d GIT_SILENT Sync po/docbooks with svn 2024-08-02 01:34:46 +00:00
l10n daemon script
9eec89b375 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-08-02 01:23:06 +00:00
Xaver Hugl
e351d9dca1 backends/libinput: don't apply pointer acceleration to touchpad gestures
It's unexpected that increasing pointer "speed" would also change the distance
required to activate gestures
2024-08-01 09:52:12 +00:00
David Edmundson
99caa54901 core: Introduce explicit weight to InputEventFilter
This is problematic as it means anything requiring a fixed position
in the chain cannot be added or removed at runtime. This is bad for both
performance and code cleanliness as all code ends up input.cpp rather than
where it semantically belongs.

Remaining users that prepend event filters have the problem of the order
being effectively undefined.

This patch adds a weight attribute to the filter allowing filters to be
installed and removed at runtime whilst maintaining a specific deterministic
order.

Currently the order is defined by an enum based on the filter names.
This gives an easy to read explicit order for anyone reading kwin code, but
it is left cast to an int so we have future flexibility.
2024-08-01 08:46:06 +00:00
l10n daemon script
f22ef1f090 GIT_SILENT Sync po/docbooks with svn 2024-08-01 01:36:56 +00:00
l10n daemon script
1fb8b25fe6 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-08-01 01:23:23 +00:00
Vlad Zahorodnii
398cf8df1b Add CursorSource::frame
This fixes not sending frame callbacks for tablet cursors. And in general
this simplifies the code by removing a level of indirection responsible for
communicating the frame timestamps, the Compositor can tell the CursorSource
the frame time directly.
2024-07-31 12:15:48 +00:00
l10n daemon script
ecf7211d2d GIT_SILENT Sync po/docbooks with svn 2024-07-31 01:32:12 +00:00
David Edmundson
0081ede8f1 x11: Ignore all grab notifications for focus handling
On X11 we get focus in and out events for normal input and when grabs
change. Kwin's concept of the active window should only follow the
normal focus changing.

Testing done:
Run Xfreerdp and move the pointer outside the window, the cursor
decoration should not change. It should still be the active window.
2024-07-30 14:54:16 +00:00
Nicolas Fella
2d23b30cee plugins/keynotifications: Optionally ring system bell when using lock keys
BUG: 464457
2024-07-30 14:16:02 +00:00
Vlad Zahorodnii
bc2c5bf43e Fix checking whether GraphicsBufferView is null
If the graphics buffer view is null, GraphicsBufferView::image() will
point to a valid memory location but the QImage at that address is going
to be null.
2024-07-30 14:02:16 +00:00
Nicolas Fella
b1ac04179d plugins/stickykeys: Ring system bell when modifiers are used
BUG: 464456
2024-07-30 15:19:35 +02:00
Nicolas Fella
80b5910594 Add visual bell effect
This effect is used to implement the visual bell accessibility feature.

It allows to implement it on Wayland and significantly improve it on X11,
where it's currently rather broken.

It offers two modes:
- Inverting the colors (code is based off the invert effect)
- Flashing a solid color
2024-07-30 15:19:35 +02:00
Michael Weghorn
14a10b3b4b Add Window.captionNormal property
Make the window caption without suffix available in
the scripting API by adding a `captionNormal` property.

Update the doc for the `caption` property to mention that
`captionNormal` can be used to get the caption without
added suffix, instead of suggesting to call a getter with
a bool param that was dropped in

    commit f0652970f4
    Date:   Sun Aug 20 09:35:15 2017 +0200

        Drop boolean parameter from AbstractClient::caption
2024-07-30 12:04:56 +00:00
Nate Graham
f015b73a48 Loosen minimum screen size detection code for output scale calculation
We return early for screens with physical height reported as ≤ 0mm.

However some extremely dumb screens report a value for their height
greater than zero but absurdly small, causing the scale calculator to
go ballistic. Theoretically this could happen for widths, too.

Let's loosen the detection to flag a physical screen size as invalid if
either its width or height is less than 3mm. There is no screen that
can possibly make sense to exist at this physical size given the angular
resolution of the human eyeball. And if for some reason it does, 100%
scale is fine for it.

BUG: 490777
FIXED-IN: 6.2.0
2024-07-30 03:16:01 +00:00
l10n daemon script
93e794435f GIT_SILENT Sync po/docbooks with svn 2024-07-30 01:35:23 +00:00
l10n daemon script
d41e0ca127 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-07-30 01:24:58 +00:00
Joshua Goins
34c2a36000 ButtonRebindsFilter: Support keyboard modifiers with mouse buttons
This is needed to better support emitting mouse button events when
pressing tablet buttons. It's common in many art programs that an action
is tied to a mouse button + a modifier, such as panning the canvas. So
being able to send keyboard modifiers in tandem with mouse buttons is
very useful when rebinding.

Tests are added for this new feature.

CCBUG: 469232
2024-07-29 15:46:44 +00:00
Xaver Hugl
d01e20b6a9 activation: don't add the active window to should_get_focus list
The matching X11 focusIn event will never arrive, and so the window is stuck
in the list and messes with activation until it's no longer the active window
and then active later again

BUG: 484155
2024-07-29 11:15:21 +00:00