Commit graph

23836 commits

Author SHA1 Message Date
Xaver Hugl
beb6cca65d backends/drm: support hardware scaling with direct scanout 2022-12-30 18:16:26 +00:00
Niklas Stephanblome
39612ade13 effects/overview: allow entering spaces in search field
In the Overview effect, pressing the space bar doesn't always insert a
space character into the search field as one would expect; when the text
in the search field matches any windows, it instead activates the
highlighted window. At other times, it does insert a space as expected.

This behavior is unpredictable and unintuitive, so this commit fixes the
issue by intercepting the key input event and inserting a space when the
search field has focus. In this state, the highlighted window can be
activated using the enter/return key. When the search field doesn't have
focus, a press of the space bar will continue to activate the selected
window.
2022-12-30 17:44:48 +00:00
Xaver Hugl
00c0f29f8e autotests/drm: add test that verifies extending output lifetimes works 2022-12-30 14:53:45 +00:00
Xaver Hugl
239207c5ee backends/drm: extend connector lifetime to match their outputs
As disconnected outputs outlive DrmGpu::updateOutputs, the DrmConnector
and DrmPipeline must also be kept valid for that time

BUG: 463334
2022-12-30 14:53:45 +00:00
Nicolas Fella
ccaf0210d1 Ignore critical notifications in window heap effects
We filter out regular notifications, but critical notifications are their own window type, so we need to explicitly filter them too

BUG: 463437
2022-12-30 10:47:09 +00:00
l10n daemon script
87cd6bda4e GIT_SILENT Sync po/docbooks with svn 2022-12-30 10:04:38 +00:00
l10n daemon script
04b7c79329 GIT_SILENT Sync po/docbooks with svn 2022-12-30 02:42:48 +00:00
l10n daemon script
fddd65deda 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"
2022-12-30 02:09:12 +00:00
Joshua Goins
37adc06603 wayland: Send tilt and rotation events, if supported
While tilt is sent on X11, we're currently only sending pressure events and not tilt/rotation events on Wayland. Since Krita is still running in X11, and it's running through XWayland - it's technically a Wayland client and gets no tilt/rotation. This fixes that issue :-)

I saw !3231 which was working on complete Wayland tablet support, but it's been stagnating. I just wanted tilt & rotation support now, so I added a way to query capabilities from the `m_capabilities` variable on the private interface we already fetched.

Tested on Krita using the Tablet Debug Log.
2022-12-30 01:57:25 +00:00
Xaver Hugl
40ca578bd0 workspace: don't make the placeholder output too big
The size is used in NETRootInfo::setDesktopGeometry, which seems to cause
some applications to misbehave or even crash because they attempt to create
a texture larger than what the GPU supports

CCBUG: 461848
2022-12-29 21:19:04 +00:00
Nate Graham
b9612ca0b7 kcms/kwineffects: use new term "Peek at Desktop"
The widget was renamed a while back, but the KCM still used the old
term to refer to it when letting the user choose the visual effect that
it shows the user. Let's change that.

BUG: 463087
FIXED-IN: 5.27
2022-12-29 18:03:02 +00:00
Andrey Butirsky
58e2ce1057 cleanup: get rid of "parent" argument
- The Xkb object is owned by std::unique_ptr
so there is no need in the parent relationship

- Remove unused header
2022-12-29 16:55:33 +00:00
Andrey Butirsky
9bbcc506d3 fix ASAN detected stack-use-after-return error
Fixes: https://invent.kde.org/plasma/kwin/-/issues/129
2022-12-29 16:55:33 +00:00
l10n daemon script
3dc66923c4 GIT_SILENT Sync po/docbooks with svn 2022-12-29 02:27:25 +00:00
l10n daemon script
79c9c79f0a GIT_SILENT Sync po/docbooks with svn 2022-12-28 02:22:11 +00:00
l10n daemon script
4a210a7d79 GIT_SILENT Sync po/docbooks with svn 2022-12-27 02:13:10 +00:00
l10n daemon script
8b084b7b3d GIT_SILENT Sync po/docbooks with svn 2022-12-26 02:21:56 +00:00
l10n daemon script
e98282a8a6 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"
2022-12-26 02:05:01 +00:00
l10n daemon script
87c1f5a7fd GIT_SILENT Sync po/docbooks with svn 2022-12-25 03:02:31 +00:00
l10n daemon script
e4335e4c8b GIT_SILENT Sync po/docbooks with svn 2022-12-24 02:15:47 +00:00
ivan tkachenko
c735463916 Remove whitespace between "5 %" in actions names 2022-12-23 15:31:06 +00:00
Aleix Pol
ee7f4c47b2 screencast: Do not attempt to render an empty cursor
This will make the system assert upon bind as the image is null and thus
never allocated.
2022-12-23 04:46:43 +01:00
l10n daemon script
b661c3d122 GIT_SILENT Sync po/docbooks with svn 2022-12-23 02:12:48 +00:00
l10n daemon script
ae605bab12 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"
2022-12-23 01:55:25 +00:00
l10n daemon script
8c5f8e2fa5 GIT_SILENT Sync po/docbooks with svn 2022-12-22 02:09:16 +00:00
Xaver Hugl
e3586f7dbf fix some warnings 2022-12-21 21:42:49 +00:00
Xaver Hugl
1d98333660 effects/tileseditor: don't mix QObject and std::unique_ptr ownership 2022-12-21 21:42:49 +00:00
Xaver Hugl
1a8c796536 backends/fakeinput: fix time 2022-12-21 21:07:15 +01:00
Xaver Hugl
f6b6d3051b use std::chrono::microseconds for time in input events 2022-12-21 21:07:15 +01:00
Xaver Hugl
3390904c19 input: use KeyEvent instead of QKeyEvent 2022-12-21 21:07:15 +01:00
Xaver Hugl
55e55b9b15 input: use WheelEvent instead of QWheelEvent 2022-12-21 21:07:15 +01:00
Xaver Hugl
3d92f5b75f input: use MouseEvent instead of QMouseEvent 2022-12-21 21:07:15 +01:00
Xaver Hugl
0777d076e6 wayland/seatinterface: remove properties
They're not used for anything
2022-12-21 21:07:15 +01:00
Vlad Zahorodnii
bcdb2ff57c Add CursorSource size getter
CursorSource::size() provides a way to get the size of the attached
cursor source without actually looking into its contents.
2022-12-21 18:30:27 +00:00
Asahi Lina
d8da7a4eaa kwinglutils: Restore the default FB when the last FBO is unbound
Fixes GL warnings in GbmSurface::makeContextCurrent() when using
screencasting.
2022-12-21 12:34:24 +00:00
Asahi Lina
a508149882 dmabuf: Create buffers without the SCANOUT flag
gbm_bo_create_with_modifiers implies the GBM_BO_USE_SCANOUT flag, which
disables complex (tiled or compressed) formats that cannot be used for
scanout. This reduces performance. We don't need to scan out buffers
created for sceencasting/etc., so this is suboptimal.

By switching to gbm_bo_create_with_modifiers2, we can explicitly pass
the flags and avoid falling back to lower performance formats. Also add
a config check and fall back to the old version, to retain compatibility
with older mesa versions.
2022-12-21 12:34:24 +00:00
Asahi Lina
f5a80f0d3c screencast: Don't skip the last valid modifier
Since modifiers are listed in preference order, the last one is usually
the most general fallback. If we drop it, we risk winding up with no
usable modifiers.

On Apple GPUs with the Asahi driver, the received modifiers are usually
compressed, twiddled, and linear. Dropping linear means we only request
complex formats. But then gbm_bo_create_with_modifiers always requests
a scanout-capable BO which cannot support complex formats, and we wind
up with nothing. This breaks screencasting on these platforms.
2022-12-21 12:34:24 +00:00
Vlad Zahorodnii
f37acaff54 scene: Split base Scene class from WorkspaceScene class
The main motivation behind this change is to share rendering code
between windows and the cursor, specifically the Item class which
requires a Scene.

Note that Scene subclasses are responsible for issuing
ItemRenderer::renderItem() calls. The main reason for that is the
current architecture of the effects system, specifically we need to call
some effects hooks before and after painting a window.
2022-12-21 12:20:23 +02:00
Vlad Zahorodnii
6c71bfd800 scene: Rename Scene to WorkspaceScene
Currently, the Scene class is used to represent the contents of the
Workspace so rename it to match its usage.
2022-12-21 11:49:07 +02:00
Vlad Zahorodnii
9c0056c96d Make opengl cursor delegate push fbo
This case was overlooked in 8071ade9a8.
2022-12-21 09:16:50 +00:00
Vlad Zahorodnii
ccf5623f34 backends/wayland: Flush rendering commands in endFrame()
eglSwapBuffers() used to flush rendering commands but now that we render
to dmabufs, we need somehow to flush the rendering commands to the dmabuf.

It fixes some of the weird rendering issues that I see sometimes.
2022-12-21 09:16:50 +00:00
l10n daemon script
370808b9d2 GIT_SILENT Sync po/docbooks with svn 2022-12-21 02:12:30 +00:00
l10n daemon script
d11181090c 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"
2022-12-21 01:55:00 +00:00
Xaver Hugl
f90ec209d4 core/renderlayerdelegate: remove QObject parent
Managing an object with both std::unique_ptr and a QObject parent at the
same time is unnecessary and potentially dangerous
2022-12-20 23:38:46 +01:00
Vlad Zahorodnii
5553d0e0f4 Introduce SurfaceCursorSource
The contents of the cursor can be either a normal image or a wl_surface.
At the moment, we get an image from the wl_surface. But it's going to be
changed so we use SurfaceItem to render wl_surface cursors.

SurfaceCursorSource provides the way to get the wl_surface handle from
the cursor. In order to provide backwards compatibility, it also provides
a QImage.
2022-12-20 15:17:59 +02:00
Vlad Zahorodnii
877406ba50 wayland: Emit Cursor::changed signal when cursor surface is committed
The damaged signal is wired to the KWaylandServer::Cursor::changed
signal to indicate when the cursor image changes, makes sense.

But it can create issues if you repaint cursor SurfaceItem when the
SurfaceInterface::damaged signal is emitted. There might be other
signals that we need to wait for to invalidate SurfaceItem's state.

The SurfaceInterface::committed is a better signal. When it's emitted,
the surface commit has been completed. Technically, it's different from
the damaged signal, but in practice they are equivalent. GTK and Qt
always damage the cursor surface.
2022-12-20 09:06:19 +00:00
l10n daemon script
a9174ad9a0 GIT_SILENT Sync po/docbooks with svn 2022-12-20 02:11:01 +00:00
l10n daemon script
6ab6f188cd 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"
2022-12-20 01:50:45 +00:00
Vlad Zahorodnii
4e2e9ab78a wayland: Fix updating pixel data from translucent client buffers when using qpainter backend
We must set QPainter::CompositionMode_Source to overwrite the old
contents.
2022-12-19 18:15:00 +00:00
Vlad Zahorodnii
977016b743 scene: Change clear color in ItemRendererQPainter
It makes the behavior of the ItemRendererQPainter compatible with the
behavior of the ItemRendererOpenGL. It is needed to ensure that the
cursor layer is properly cleared too.
2022-12-19 17:02:20 +02:00