Commit graph

27358 commits

Author SHA1 Message Date
Xaver Hugl
24ab95bdd7 workspace: don't rearrange immediately when a window with struts gets removed
Otherwise, rearrange can happen on intermediate output configurations, as layer shell
windows can get closed in response to outputs being disabled.
That rearrange on intermediate output configurations can confuse the placement tracker
logic, which may then move windows to weird locations or even offscreen

CCBUG: 479694
2024-09-03 13:29:31 +00:00
Vlad Zahorodnii
8443da3083 scene: Fix attempting to scanout empty surfaces
X11 windows might be mapped but temporarily have missing wl_surface or
the wl_surface can be temporarily unmapped.

CCBUG: 491964
2024-09-03 12:44:25 +00:00
Xaver Hugl
5b2304c709 wayland/color management: fix waylandToKwinIntent
We support relative colorimetric with bpc now, so it needs to also be mapped in the function
2024-09-03 11:42:23 +00:00
Akseli Lahtinen
d66925251a
input.cpp: refactor enable and disable touchpads
Add method enableOrDisableTouchpads which sets touchpads to
given state and also sends OSD message, so there's no
duplicate OSD messages or otherwise repeated code.
2024-09-03 11:53:50 +03:00
l10n daemon script
a01b71f922 GIT_SILENT Sync po/docbooks with svn 2024-09-03 01:29:32 +00:00
l10n daemon script
9911231b99 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-09-03 01:20:36 +00:00
Akseli Lahtinen
e910dcb9ed input.cpp: initialize m_touchpadsEnabled in addInputDevice
m_touchpadsEnabled gets initialized to true in input.h,
and the actual status of the device is not evaluated until
the toggleTouchpads setting is pressed.

This fixes the issue by removing m_touchpadsEnabled and refactoring the toggling
method. OSD is handled by their respective enable/disable Touchpads methods.

BUG:486763
2024-09-02 14:23:59 +00:00
l10n daemon script
d67ebc950c GIT_SILENT Sync po/docbooks with svn 2024-09-02 01:29:30 +00:00
Nate Graham
1d42d64f87 plugins: hide tileseditor and windowview effects from KCM
Part of https://invent.kde.org/plasma/systemsettings/-/issues/39

These don't make much sense to disable as they're completely benign when
not in use. Their config windows only contain shortcuts which are already
in the Shortcuts KCM, so they're harmless to hide from the Desktop
Effects KCM.
2024-09-01 22:10:42 +00:00
l10n daemon script
42af2966d7 GIT_SILENT Sync po/docbooks with svn 2024-09-01 01:29:32 +00:00
l10n daemon script
89f7d41a29 GIT_SILENT Sync po/docbooks with svn 2024-08-31 01:30:12 +00:00
l10n daemon script
1951307087 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-31 01:21:21 +00:00
Xaver Hugl
eae1f51304 core/colorpipeline: refactor tone mapping to be about dimming instead of addnig headroom
No functional change, just so that the logic is a bit easier to follow
2024-08-30 22:28:13 +02:00
Xaver Hugl
587afb3076 core/colorpipeline: only reduce the reference luminance enough to get 50% headroom
If the output side / display can already show at least 50% headroom, dimming the image to get
more space for the highlights doesn't improve the highlights a lot, definitely not enough to
justify making the rest of the image worse for it.
2024-08-30 22:06:55 +02:00
Vlad Zahorodnii
b708a93c1e scene: Add an assert to debug crash in BlurEffect::prePaintWindow()
This checks whether a WindowItem is destroyed in the middle of a painting
cycle.

This is meant as short-term means to debug the issue.
2024-08-30 18:54:11 +00:00
Vlad Zahorodnii
b825d5fdc3 plugins/overview: Linearize desktops in the desktop bar when using non linear desktop layout
Hiding the desktop bar based on the desktop layout produces unexpected
results.

BUG: 482023
2024-08-30 15:26:43 +00:00
Vlad Zahorodnii
51cb1baf1b plugins/backgroundcontrast: Fix a crash
The updateContrastRegion() creates an ItemEffect() object to block direct
scanout. However, it doesn't take into account that the surface item
can be null when a window is added. It can happen with Xwayland
windows.

The contrast effect creates an ItemEffect object for the SurfaceItem,
which is reasonable. But on the other hand, the contrast effect still
operates per window. So this change simply makes the contrast effect
register an ItemEffect with the WindowItem. When proper per item effects
are supported, this can be changed (the contrast effect would need to
monitor the wl_surface getting added and removed).
2024-08-30 14:46:42 +00:00
Vlad Zahorodnii
8f40b5b554 plugins/blur: Fix a crash in BlurEffect::updateBlurRegion()
The updateBlurRegion() creates ItemEffect() objects to block direct
scanout. However, it doesn't take into account that the surface item
can be null when a window is added. It can happen with Xwayland
windows.

The blur effect creates ItemEffect objects for the SurfaceItem and the
DecorationItem, which is reasonable. But on the other hand, the blur
effect still operates per window. So this change simply makes the blur
effect register an ItemEffect with the WindowItem. When proper per
item effects are supported, this can be changed (the blur effect would
need to monitor the wl_surface getting added and removed).
2024-08-30 14:46:42 +00:00
David Edmundson
e4f9df54e6 inputmethod: Only align within availableGeometry if it fits
An input panel in Overlay mode controls it's own size.

If there's space we want to fit it centre aligned within the available
space, but if it doesn't fit (i.e having a left panel and a full width
keyboard) then centre aligning within the available space doesn't make
sense. We would half overlap the panel and half go offscreen. This patch
adjusts us to centre align to the output in that condition.

BUG: 440571
2024-08-30 14:33:12 +00:00
David Redondo
5a3d2593f1 wayland: Allow setting the clipboard with the current serial
Some clients (for example Chromium and LibreOffice) display a certain
behavior in that they will set the clipboard twice in short succession
deleting the data source in between and using the same serial twice.
This allows setting the clipboard with the same serial as
the current clipboard which only the current owner (or previous
owner when the source was deleted) should know.
2024-08-30 14:50:20 +02:00
l10n daemon script
8141cc1871 GIT_SILENT Sync po/docbooks with svn 2024-08-30 01:38:00 +00:00
Gatien DA ROCHA
e86ae36088 ScreenCast : fix edge-case for format modifier fixation
The current implementation for DMA-Buf sharing on kwin is slightly broken.

When a client connects to the kwin screencast's stream, it supplies a `SPA_PARAM_EnumFormat` list, containing entries for every supported format, and the drm modifier list for that format (for dmabuf sharing).

Usually, the `SPA_FORMAT_VIDEO_modifier` property from the consumer has the `SPA_POD_PROP_FLAG_DONT_FIXATE` flag set. Kwin then receives the full choice list, and gets to pick a relevant modifier.

In situations where the DONT_FIXATE flag is missing, pipewire chooses an arbitrary match between the consumer and kwin. In that case, kwin currently assumes DRM_FORMAT_MOD_INVALID is to be used no matter what, which goes against the comment right above it within the screencaststream.cpp file. Even worse, if DRM_FORMAT_MOD_INVALID is not supported by the consumer, this also causes the param_changed callback to freak out, as one of the conditions to update the stream params is `!receivedModifiers.contains(m_dmabufParams->modifier`. Since m_dmabufParams->modifier contains DRM_FORMAT_MOD_INVALID, which is not among the modifiers kwin receives, the params are changed continuously and no buffer sharing can happen.

--

I'd be happy to supply code to reproduce what I attempted to describe above if needed. I'm not aware of any program currently affected, but I found this out when messing around myself.

Relevant docs are here :
<https://docs.pipewire.org/page_dma_buf.html>

> If the SPA_PARAM_Format contains a modifier key, without the flag SPA_POD_PROP_FLAG_DONT_FIXATE, it should only contain one value in the SPA_CHOICE_Enum. In this case announce the SPA_PARAM_Buffers accordingly to the selected format and modifier.
2024-08-29 20:18:28 +00:00
Christoph Wolk
0eb143c0ef kcms/rules: replace dock/panel icon
The combobox for window type matching in the rules kcm currently uses
list-remove (represented by a minus sign) as its icon; while
semantically ill-fitting, it was visually a good match and breeze-icon-
theme does not have a dedicated panel icon. Recently however, the icon
was changed and now depicts a red X. This makes it a bad fit all-around
for its use in this kcm.

This change replaces it with another visually good fit that doesn't
match semantically, namely spinbox-decrease (also a minus sign), as a
temporary measure until a proper panel icon is ready (tracked in BUG
492341).
2024-08-29 13:52:13 +00:00
Christoph Wolk
e4e5fa3b08 kcms/rules: use sentence case in comboboxes/names
The HIG recommend sentence case for combobox entries. The comboboxes in
the rules kcm currently mostly use title case for their entries. The
property names mostly use sentence case, although there are few
exceptions using title case. The HIG are not explicit here (although
sentence case seems to be in the spirit of the guidance); in any case it
should be consistent.

This change converts the labels and property names to sentence case. It
also includes some minor phrasing touch-ups, in particular regarding on-
screen displays which are now spelled correctly and consistently.
2024-08-29 13:52:13 +00:00
Vlad Zahorodnii
fc1f53895f Add an assert in Window::unref() 2024-08-29 13:24:04 +00:00
Kai Uwe Broulik
54cb3407d3 plugins/outputlocator: Add outline to frame
Ensures a contrast between a window behind it, e.g. the KScreen KCM.
2024-08-29 13:06:45 +00:00
l10n daemon script
d24ec2a335 GIT_SILENT Sync po/docbooks with svn 2024-08-29 01:30:16 +00:00
Thomas Duckworth
3b918b4409 plugins/colorblindnesscorrection: mark as internal and remove configuration UI
Depends on https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/2472
as it's being moved to the Accessibility KCM for greater… accessibility!

CCBUG: 488771
2024-08-28 23:56:23 +00:00
Christoph Wolk
0cb70c8d36 kcms/decoration: use sentence case for combobox
The HIG recommend sentence case for combobox entries. The window border
combobox in the decoration kcm currently uses title case, except for the
option following the theme default, which uses mixed title and sentence
case.

This change converts the labels to sentence case. The "Theme's default"
option is also renamed to "Theme default", as this is a shorter and more
common construction in UI strings.
2024-08-28 21:50:04 +00:00
Vlad Zahorodnii
3ce9b1b872 plugins/qpa: Suppress warnings about raise()/lower() not being implemented
We write window code with an assumption that the compositor will do the
right thing when a window is shown or hidden or activated, so our qpa can
leave stub implementations for raise() and lower() to suppress the
warnings produced by the stack manipulation functions in Qt.
2024-08-28 17:34:21 +03:00
Aleix Pol Gonzalez
6c4ded2034 input: Allow different surfaces to be interacted in parallel by touch
While on pointers and keyboards the focus patterns follows rather
naturally, on touch screens it doesn't so much.
This change adapts our touch infrastructure to allow for multiple
surfaces to be issued touch events without forcing all interactions into
the same one.

Signed-off-by: Victoria Fischer <victoria.fischer@mercedes-benz.com>
2024-08-28 09:36:51 +00:00
Aleix Pol Gonzalez
912d339489 window: Extend API documentation
Signed-off-by: Victoria Fischer <victoria.fischer@mercedes-benz.com>
2024-08-28 09:36:51 +00:00
l10n daemon script
c2d28d5b96 GIT_SILENT Sync po/docbooks with svn 2024-08-28 01:40:22 +00:00
l10n daemon script
4d66241fb0 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-28 01:29:03 +00:00
Christoph Wolk
5ae746eef2 kcms/screenedge: use sentence case for combobox
The HIG recommend that comboboxes use sentence case. The Screen Edges
kcm has a combobox that allows users to configure when to switch
desktops by moving to the edge, which uses title case for its entries.

This change makes this combobox use sentence case for its labels.
2024-08-27 15:29:58 +00:00
Vlad Zahorodnii
ca5aa60791 utils: Adapt to svg cursor format changes 2024-08-27 14:56:57 +00:00
Vlad Zahorodnii
b26eb86310 utils: Make hotspot in CursorTheme QPointF
As far as I know, the reason that the CursorTheme provides a QPoint
hotspot is mostly due to the historical reasons. At the time, all
hotspot math had relied upon integer hotspots. After
4cd25cf571 it is no longer the case.
2024-08-27 08:18:17 +00:00
l10n daemon script
5837d042c9 GIT_SILENT Sync po/docbooks with svn 2024-08-27 01:33:04 +00:00
Vlad Zahorodnii
a418d2f13e plugins/synchronizeskipswitcher: Fix Window::skipTaskbarChanged handler
The Window::skipTaskbarChanged signal no longer has a Window argument.

BUG: 465600
2024-08-26 13:38:29 +00:00
Vlad Zahorodnii
276baa7dd5 Fix null dereference in Workspace::workspaceEvent()
If Xcb::CurrentInput fails for some reason, the "->" operator will return
null.
2024-08-26 13:17:13 +00:00
l10n daemon script
636cbbe024 GIT_SILENT Sync po/docbooks with svn 2024-08-26 01:41:00 +00:00
Vlad Zahorodnii
1e7cfc1d19 Fix directScanout getting shadowed
Amends 7ab825cba1.

This shadow "directScanout" variable breaks

    if (!directScanout) {
        if (!m_backend->present(output, frame)) {
            m_backend->repairPresentation(output);
        }
    }

which can result in present() function getting called twice with the
same `OutputFrame` object: first, at line 359, and the second time at
line 386. That, in its turn, would queue two drm commit objects with
the same OutputFrame and then the behavior is undefined.
2024-08-25 15:41:00 +00:00
Vlad Zahorodnii
5276801d5e core: Add a m_presented assert in OutputFrame::presented()
presented() must be called at most once.
2024-08-25 15:07:10 +00:00
l10n daemon script
35d4ac716c GIT_SILENT Sync po/docbooks with svn 2024-08-25 01:29:59 +00:00
Jin Liu
31fac8493e utils: get svg cursor nominal size from metadata
Instead of assume it to be 24.
2024-08-24 14:54:45 +00:00
l10n daemon script
b88bce1b2e GIT_SILENT Sync po/docbooks with svn 2024-08-24 01:30:21 +00:00
l10n daemon script
59881f31a0 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-24 01:22:08 +00:00
Yifan Zhu
af8de6be74 KeyboardLayout: always set componentDisplayName for shortcut
Otherwise the last call uses the default, which overrides the previous
calls.

Test plan:
- Go to system settings - shortcuts
- Verify the category for layout switching is now correctly called
  "Keyboard Layout Switcher"

CCBUG: 492019
2024-08-23 14:54:26 +00:00
Xaver Hugl
eaf7e9a3a2 core/colorspace: be more robust about edge cases
xyz -> xy and xy -> xyz conversions have divisions in them, so we need to
handle the edge cases of the divisor being zero. This can happen if an ICC
profile is invalid, or if the XYZ color space is used.
2024-08-23 10:45:46 +00:00
David Edmundson
99f2cd2f51 Revert "wayland: Revert send pointer leave on drag"
Now we have server-side cursor icons, we can send the pointer leave.

This reverts commit 9302e84b95.
2024-08-23 09:42:05 +00:00