Commit graph

26149 commits

Author SHA1 Message Date
Xaver Hugl
1f1c54ca6c window: use normal keyboard modifiers for triggering custom tiling
Modifiers for global shortcuts are handled differently from normal shortcuts,
because they need to consider modifiers that are consumed by xkb for keyboard
layout transitions and similar. This restriction is not relevant for custom
tiling.

BUG: 465858
2024-02-14 14:25:03 +00:00
Xaver Hugl
a917d1885e input_event: remove modifiersRelevantForTabBox
It was only needed because the normal modifiers path considered caps lock
as shift lock
2024-02-14 14:25:03 +00:00
Xaver Hugl
8c543dbe7c xkb: caps lock is not shift lock
Caps lock only locks capitalization of letters, making it artificially also
trigger shift in the context of KWin only causes problems
2024-02-14 14:25:03 +00:00
Aleix Pol Gonzalez
c5305820d4 Reduce needed dependencies
For many components KConfigWidgets isn't necessary, just KColorScheme.

Signed-off-by: Falko Becker <falko.becker@mbition.io>
2024-02-14 14:45:24 +01:00
David Edmundson
5386360928 wayland: Send wl_pointer leave before data_device enter
SeatInterface currently has a separation of kwin's focus scope to
pointer input with early return guards in notifyPointerEnter and
notifyPointerLeave where clients don't get pointer events.

However we don't update the initial state when a drag is started, this
patch notifies sends a pointer leave to the new drag target before the
data_device enter so things are consistent.

This also brings it in line with Weston and Mutter.

notifyPointerLeave has it's early return removed as for wayland windows
as we know nothing will have pointer focus.
2024-02-14 12:39:32 +00:00
Vlad Zahorodnii
8a9cb06b41 Adapt to NETRootInfo::moveResize() changes 2024-02-14 10:43:00 +00:00
David Edmundson
eab90b6a0a overview: Explicitly reset parent on teradown
Instantiators create objects when they're added to a model, and
deference when when they're removed from the model.

When we explicitly set a parent in onObjectAdded we're creating a second
reference. This does get cleaned up later, but not in the same frame.

This brings us in line to what QQmlRepeater (which works with items)
does internally for items being added and removed.

BUG: 478777
2024-02-14 09:19:28 +00:00
l10n daemon script
b480297913 GIT_SILENT Sync po/docbooks with svn 2024-02-14 01:23:06 +00:00
l10n daemon script
1230c5ef92 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-02-14 01:14:48 +00:00
Xaver Hugl
c6be2b51a9 backends/wayland: support direct scanout
This allows for (mostly) overhead-less pass-through of fullscreen content
to the host compositor
2024-02-13 15:45:26 +00:00
Yifan Zhu
2f4db693e3 screenedge: don't reduce approachGeometry
Reducing approachGeometry is not needed.

During edge creation, createHorizontalEdge and createVerticalEdge
already substract the needed cornerOffset, and edges reserved by client
windows shouldn't be reduced in geometry.
In addition, during display, ScreenEdgeEffect confines the painted area
to approachGeometry. So approachGeometry shouldn't be reduced in
advance.

BUG: 481282
2024-02-13 15:30:22 +00:00
Vlad Zahorodnii
55ef69645c Fix a warning about null sender in QObject::connect()
The original assumption was that once PointerInputRedirection starts
pushing cursor sources to cursors, they cannot be null. In many cases,
it is true, but the tests are a bit special as many of them lack
wl_pointer.set_cursor requests, so it's possible to set a null source.
As an example, when the pointer moves from the decoration to the
surface. On the other hand, it also does make sense to allow having
no source connected.
2024-02-13 13:36:52 +02:00
Ismael Asensio
f6447ad188 tabbox/thumbnail-grid: Activate on thumbnail click when selected
While tabbox switching is usually a keyboard operation, we offer also
a mouse-friendly way to launch it via screen edges, and should allow
to switch directly on mouse click.

BUG: 481267
FIXED-IN: 6.0
2024-02-13 09:10:21 +00:00
l10n daemon script
62b55d0463 GIT_SILENT Sync po/docbooks with svn 2024-02-13 01:24:18 +00:00
l10n daemon script
77f3046ae0 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-02-13 01:14:57 +00:00
Xaver Hugl
8f27ee0cb8 input: remove hasAlphaNumericKeyboard method
It's completely unreliable
2024-02-12 18:19:23 +01:00
Vlad Zahorodnii
9abf7a9d61 plugins/blur: Fix blurred region sticking outside panel popups
The blur geometry is scaled in the global coordinate space, while it
works fine with integer scale factors, it's not okay with fractional
scale factors as it doesn't match how the ItemRenderer snaps quads to
the pixel grid.

Note that blur behind apps can be still off by one pixel, but it
should be harder to notice it. In order to fix it, it would be great
to apply effects behind Items, which is on my todo list.
2024-02-12 14:22:55 +00:00
Xaver Hugl
2ca1d3fd4c kscreenintegration: fix rotation not being preserved from Plasma 5 2024-02-12 13:38:14 +00:00
Vlad Zahorodnii
857766eb74 scene: Fix DecorationItem reacting to new geometry
Window::layoutDecorationRects() uses KDecoration2::Decoration::rect() to
get the bounding decoration rect.

While Decoration::rect() should normally match Window::rect(), they can
diverge for a brief moment during async geometry updates. The worst
possible case is that the cached item quads may not be invalidated when
the geometry updates saddle.

To fix that, make DecorationItem monitor decorated client size changes
instead of window frame geometry changes. The reason for that is that
Decoration::size() is effectively decorated client size with added border
margins.
2024-02-12 13:16:58 +00:00
Pedro Nishiyama
a0d437163d Add Adaptive Sync window rule 2024-02-12 12:05:52 +00:00
Vlad Zahorodnii
b02190bf23 plugins/overview: Fix a warning about incorrect anchor
The mouse area is no longer a sibling of the window heap, which produces
a warning.

BUG: 481106
2024-02-12 11:09:19 +00:00
l10n daemon script
956451111c GIT_SILENT Sync po/docbooks with svn 2024-02-12 01:20:51 +00:00
l10n daemon script
4585cec7a1 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-02-12 01:13:13 +00:00
Jin Liu
daec969720 effects/outputlocator: add name and description metadata
Otherwise it's shown as a confusing empty item when "show
builtin" is on.
2024-02-11 01:28:20 +00:00
l10n daemon script
349f9c1fb6 GIT_SILENT Sync po/docbooks with svn 2024-02-11 01:23:44 +00:00
l10n daemon script
9187fe80f4 GIT_SILENT Sync po/docbooks with svn 2024-02-10 01:32:30 +00:00
l10n daemon script
ea8dd5f32c 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-02-10 01:17:39 +00:00
Vlad Zahorodnii
4e8f1bdfda Bring back decoration spacer buttons
They were lost during KDecoration 1 -> KDecoration 2 transition.

CCBUG: 348393
CCBUG: 438719
2024-02-09 18:20:33 +00:00
Vlad Zahorodnii
13e7cac019 Handle wl_surface destruction in SurfaceCursorSource
Wine/Wayland hides the cursor as follows:

[ 853107.473]  -> wl_pointer@15.set_cursor(172832, wl_surface@38, 0, 0)
...
[ 858989.757]  -> wl_surface@38.destroy()
[ 858989.759]  -> wl_pointer@15.set_cursor(172832, nil, 0, 0)

i.e. it destroys the cursor surface, then calls wl_pointer.set_cursor().

SurfaceCursorSource stores the wl_surface in a QPointer, furthermore it
is going to emit the changed signal, which is needed to force the
CursorItem to update its content, only if either a new hotspot or a
surface has been passed to SurfaceCursorSource::update(). So what happens
is the following:

- The SurfaceInterface object is destroyed and the QPointer resets its
  value to nullptr
- SurfaceCursorSource::update(nullptr, QPointF(0, 0)) gets called in
  response to wl_pointer@15.set_cursor(nil, 0, 0)
- but since m_surface has been implicitly reset to nullptr, no changed
  signal is going to be emitted

This change addresses the issue by making the SurfaceCursorSource track
the SurfaceInterface's destroyed signal.

BUG: 480582
2024-02-09 13:53:04 +02:00
David Edmundson
95d4671a10 quickeffect: Avoid double delete of QQuickViews
Views are owned by the C++ backend, but also retrievable by invokables
to get neighbouring screens from JS space. By default Qt then transfers
ownership of the view to the QML collector. This results in double
ownership.

BUG: 480788
2024-02-09 09:12:17 +00:00
l10n daemon script
914aeb32ec GIT_SILENT Sync po/docbooks with svn 2024-02-09 01:25:27 +00:00
Ismael Asensio
7c8b5be55a kcms/rules: Fix import/export FileDialog type
They were just missing the alias qualifier.

Add also explicit parameters to the signal handlers.

BUG: 481082
FIXED-IN: 6.0
2024-02-08 22:24:44 +01:00
Xaver Hugl
31ebdb73a0 scene/surfaceitem: change refresh rate estimation to frame time estimation
This is both more direct and avoids divisions by durations that can potentially
be zero

BUG: 480971
2024-02-08 19:36:15 +01:00
Vlad Zahorodnii
06db626fc4 Reorder code in VirtualDesktopManager::setPlasmaVirtualDesktopManagement()
The code that initializes the initial state is buried between connect()s,
but there is no reason to do it and it is less organized.
2024-02-08 14:56:15 +00:00
Vlad Zahorodnii
764f0102fd Drop save() in VirtualDesktopManager::setVirtualDesktopManagement()
Changing the virtual desktop configuration when creating the plasma
virtual desktop global is wrong and it doesn't look like it happens.
2024-02-08 14:56:15 +00:00
Vlad Zahorodnii
d78dcc6140 Fix initialization of virtual desktop row count in plasma virtual desktop global 2024-02-08 14:56:15 +00:00
Vlad Zahorodnii
e974c07001 wayland: Schedule a configure event when borders change
Window::checkWorkspacePosition() before the window is mapped is still
problematic and should be avoided as it can produce undesired constrained
client size (1x1).

Given that XdgToplevelWindow tries to maintain the same frame geometry
size, it should be enough to schedule another configure event instead.
It is going to be in line with the other decoration logic in the
XdgToplevelWindow and it's a better way to handle async geometry updates.

BUG: 480910
2024-02-08 14:46:23 +00:00
Vlad Zahorodnii
5ad63f21e0 plugins/nightcolor: Rename d-bus interface 2024-02-08 14:24:51 +00:00
Xaver Hugl
a5726e19fd wayland: update xx-color-management to v2 2024-02-08 14:01:43 +00:00
Vlad Zahorodnii
cd43199e70 plugins/overview: Revoke Meta+Tab and Meta+Shift+Tab shortcuts
These shortcuts make more sense to be used with Meta+Tab and Meta+Shift+Tab.
Let's keep them reserved for the task switcher. Cycling between overview
modes is not something that requires Meta+Tab to be assigned to it by default.
2024-02-08 13:48:42 +00:00
Vlad Zahorodnii
540dff30e7 kconf_update: Drop kwin-6.0-overview-activities-shortcuts script
There are a few issues:

- it's incompatible with Version 6 format
- activity shortcuts cannot be changed in kwin
- overview shortcuts don't need to be touched

BUG: 480758
2024-02-08 13:48:42 +00:00
David Redondo
6b4018014c Guard against render time query failing
glGetQuery can fail (for example because of a context loss) in this
case the buffer stays unmodified. In this case this is zero resulting
in GLRenderTimeQuery::result() returning a negative value. Down the
line this leads to a negative duration in the RenderJournal and
RenderLoopPrivate::scheduleRepaint starting a timer with an amount
of milliseconds bigger than what an int can hold. This will not
actually start a timer but QTimer::isActive returns true resulting
in no futher repaints being scheduled.
BUG: 475605
FIXED-IN: 6.0
2024-02-08 13:29:05 +00:00
Marco Martin
51fb56773b Don't scale WindowHeap in overview mode
when in overview mode, don't scale down WindowHeap, as this
will cause ugly glitches, but resize it down instead.
Still use transforms when it goes in desktop grid mode, at least for now

probably future further refactor can still help things

Before:

![image](/uploads/7ca83e7e9292bd8489faaf76d4c12693/image.png)

After:

![image](/uploads/27b970d056c89486661d6695d09813ff/image.png)

CCBUG:475682
2024-02-08 13:01:27 +00:00
l10n daemon script
7c4bde3a32 GIT_SILENT Sync po/docbooks with svn 2024-02-08 01:22:46 +00:00
l10n daemon script
6cd615e4df 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-02-08 01:14:14 +00:00
Xaver Hugl
83fe158a16 backends/drm: fix night light updates after dpms
BUG: 480911
FIXED-IN: 6.0
2024-02-07 20:49:58 +01:00
Vlad Zahorodnii
4b7874391d kcms/tabbox: Update layout name in response to user input
The current index can change when populating the combobox.
2024-02-07 15:40:44 +00:00
Xaver Hugl
d3a2e07002 backends/drm: fix multi gpu transfers with mixed modifiers and implicit modifiers usage
BUG: 478921
2024-02-07 14:35:50 +00:00
Xaver Hugl
1583b2c717 backends/drm: fix EglGbmLayerSurface::doesSurfaceFit with multi gpu
CCBUG: 478921
2024-02-07 14:35:50 +00:00
Vlad Zahorodnii
6d0f1fedc0 plugins/backgroundcontrast: Correct texture transform
The y axis should be mirrored as the last step, otherwise it's going to
change the winding order in rotation transforms in the render target
transform.

BUG: 479934
2024-02-07 13:53:20 +00:00