Commit graph

25229 commits

Author SHA1 Message Date
Vlad Zahorodnii
de36fe82e8 wayland: Integrate KWaylandServer classes into KWin namespace 2023-09-15 16:31:15 +03:00
Vlad Zahorodnii
6ac4012827 wayland: FakeInputDevice -> FakeInputDeviceInterface
This is to avoid conflicting with KWin::FakeInputDevice
2023-09-15 16:31:15 +03:00
Vlad Zahorodnii
43eceba9ce wayland: Rename Cursor to PointerSurfaceCursor 2023-09-15 16:31:15 +03:00
Vlad Zahorodnii
541fd45a25 wayland: Add missing moc include 2023-09-15 13:13:43 +00:00
Vlad Zahorodnii
8bf2318800 wayland: Drop "_interface" from filenames
The cpp files in the wayland directory are named after protocol names.
"_interface" does not contribute anything new.
2023-09-15 13:13:43 +00:00
l10n daemon script
51e5cbe88b GIT_SILENT Sync po/docbooks with svn 2023-09-15 02:14:46 +00:00
David Redondo
eb9130ac64 Use QProcessEnvironment::InheritFromParent on X11
Before 885e9acb6e
Application::processStartupEnvironment() returned
QProcessEnvironment::systemEnvironment() which means the current
environment of KWin when this function was called. By setting
InheritFromParent we can replicate this behavior.
This fixes KWin starting processes on X11.
2023-09-14 12:30:45 +00:00
l10n daemon script
1739388b00 GIT_SILENT Sync po/docbooks with svn 2023-09-14 02:14:14 +00:00
David Redondo
216a268a43 Use qt prefix variant of toplevel drag protocol
As this is what Qt now implements
2023-09-13 15:30:17 +00:00
David Redondo
b336691b3e Implement xdg-toplevel-drag 2023-09-13 15:30:17 +00:00
David Redondo
01a1aaf99e Also send drop when it was not accepted
This enables applications to distinguish
- successful drop
- drop onto client that didn't accept
- cancelled drag
2023-09-13 15:30:17 +00:00
Marco Martin
3a95c20279 Fix touch on PointerHandlers
The events we forward to the offscreen QML view are with our own
QPointingDevice instance, which has a devicetype of touch but a null pointerType.

In Qt5 this was enough, but pointerhandlers in qt6 refuse events with an undefined
pointertype, so we have to explicitly set it to finger

BUG:473541
2023-09-13 13:25:57 +00:00
Xaver Hugl
36513123f3 backends/drm: always check for a test buffer before presentation
Otherwise atomic tests might fail unnecessarily
2023-09-13 13:57:30 +02:00
Xaver Hugl
87cee87aff backends/drm: fail presentation if there's no buffer for it yet
BUG: 474483
2023-09-13 13:37:53 +02:00
l10n daemon script
c7ddf987a1 GIT_SILENT Sync po/docbooks with svn 2023-09-13 02:24:54 +00:00
l10n daemon script
051705e5fa 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"
2023-09-13 02:21:48 +00:00
Ismael Asensio
989c00e887 screenedge: Fix dragging windows between VDs
Add the missing condition to allow moving windows between
VDs by dragging.

Amends 861105248d
2023-09-12 20:44:32 +02:00
Xaver Hugl
57fae99f33 backends/drm: check activePending instead of active for when applying a new gamma ramp is allowed
The crtc may not be set yet in some cases

BUG: 471562
2023-09-12 14:34:59 +00:00
Vlad Zahorodnii
08836ba471 wayland: Port to OutputTransform::map(QSize) 2023-09-12 14:21:19 +00:00
Vlad Zahorodnii
7887f7c38b wayland: Remove some properties from public XdgPositioner api
Most of these properties have no use after introducing placement().
2023-09-12 16:53:05 +03:00
Vlad Zahorodnii
df8ddb609b wayland: Keep transaction entries for deleted surfaces
If a transaction entry is removed, the graphics buffer reference will
be dropped and it's possible that the TransactionDmaBufLocker is going
to be destroyed as well.

If that happens, the transaction may remain in the locked state.
2023-09-12 13:09:43 +00:00
Vlad Zahorodnii
693fa8a968 wayland: Properly clear transaction list in TransactionDmaBufLocker
Transaction::unlock() can destroy buffer reference and thus also destroy
TransactionDmaBufLocker.
2023-09-12 13:09:43 +00:00
Vlad Zahorodnii
00c12aa766 wayland: Desynchronize transactions of the same client
At the moment transactions from the same client are applied in the
commit order even if the trasactions affect unrelated surfaces.

This patch desynchronizes transactions affecting unrelated surfaces.

With this, if a client updates two surfaces (as an example, Firefox with
two windows) and one of its surfaces takes longer to render, the other
surface is not going to be slowed down.

Another nice thing is that it removes client from Transaction, which
might be potentially useful to the Workspace for coordinated resize or
something.
2023-09-12 13:09:43 +00:00
Vlad Zahorodnii
4b6c83be12 wayland: Move unconstraining logic to XdgPositioner
This makes unconstraining code more reusable (in case of applet popups
use xdg-positioner too), and in general, it makes sense for better
encapsulation.
2023-09-12 12:54:15 +00:00
Xaver Hugl
23238b175a backends/drm: fix the hardware cursor with atomic modesetting + no modifier support
Unless we have explicit information of the opposite, buffers for the cursor need to be linear
2023-09-12 13:41:49 +02:00
Xaver Hugl
14f6103373 backends/drm: don't signal commit failure for the cursor
RenderLoop isn't built to handle that yet
2023-09-11 18:25:01 +02:00
Fushan Wen
dded168d93 thumbnail_grid: use MouseArea as delegate root 2023-09-11 15:59:49 +00:00
Fushan Wen
463c18f9fa thumbnail_grid: allow screen reader to announce window name when pressing Alt+Tab
CCBUG: 472643
2023-09-11 15:59:49 +00:00
Vlad Zahorodnii
dbad45d052 wayland: Introduce transactions
Transactions provide a way to apply new surface state to multiple
surfaces atomically.

A transaction can be locked. In which case, it's not going to be applied
until all locks are dropped. For example, this can be used to delay
applying new surface state until the committed buffers become idle.
2023-09-11 15:47:45 +00:00
Vlad Zahorodnii
79a0bc3f80 utils: Add static FileDescriptor::isReadable() overload 2023-09-11 15:47:45 +00:00
Vlad Zahorodnii
58904a358f wayland: Fix copying subsurface order state
When merging surface state to a fresh state container, subsurface order
state may be lost because subsurfaceOrderChanged can be false.
2023-09-11 15:47:45 +00:00
Vlad Zahorodnii
305847625f Revert "wayland: Property propagate modifier SurfaceState fields"
This reverts commit a101bc3628.
2023-09-11 15:47:45 +00:00
Vlad Zahorodnii
41e5409b23 wayland: Move frame callback destructor to SurfaceState destructor 2023-09-11 15:47:45 +00:00
Xaver Hugl
4c397a9526 backends/drm: split commits for the cursor and primary plane
And reorder and merge atomic commits where possible to ensure the cursor always
stays smooth

BUG: 472663
2023-09-11 13:02:40 +00:00
Vlad Zahorodnii
2e42d7193d wayland: Assign tablet cursor surface role 2023-09-11 15:11:55 +03:00
Vlad Zahorodnii
51e8cfc41b wayland: Refactor SurfaceRole
After introducing SurfaceExtension, SurfaceRole has lost its commit()
function. It serves informative purpose now only.

Shell surface implementations don't have to inherit from SurfaceRole.

By making SurfaceRole act more like a value type, it's possible to fix
role handling in wl_pointer.set_cursor.
2023-09-11 15:11:52 +03:00
Vlad Zahorodnii
36a548ad9f Disable Xinerama specific workarounds for layer shell windows
They should not be needed for layer shell windows and in fact can break
some cases where things are expected to work properly.
2023-09-11 06:19:21 +00:00
Vlad Zahorodnii
67dcf53e80 autotests: Add more test cases in LayerShellV1WindowTest::testPlacementArea 2023-09-11 05:53:19 +00:00
l10n daemon script
9df7954b66 GIT_SILENT Sync po/docbooks with svn 2023-09-11 02:19:21 +00:00
Vlad Zahorodnii
7d626363e4 autotests: Remove old kernel checks
CI runners have been upgraded.
2023-09-10 10:14:18 +03:00
Xaver Hugl
32ae9dd7d1 libkwineffects: rename major and minor methods
There's "major" and "minor" defines that can get implicitly included, for
example with musl libc. To prevent that from breaking compilation, rename
the methods
2023-09-09 14:44:53 +00:00
Fushan Wen
f0c8a0c482
plugins/qpa: implement platform accessibility
This allows screen readers to read window titles in a tabbox.

BUG: 472643
FIXED-IN: 5.27.9
2023-09-09 21:31:08 +08:00
l10n daemon script
1fea924c34 GIT_SILENT Sync po/docbooks with svn 2023-09-09 02:14:50 +00:00
Ser Freeman
1236e3e83b effects/maximize: Set oldGeometry only on windowMaximizedStateAboutToChange
Since there is now exist the signal right before maximize, use it to
set oldGeometry instead of storing previous values every time with
windowFrameGeometryChanged.

This fixes the effect under Wayland.
2023-09-08 07:17:27 +00:00
Vlad Zahorodnii
6dd6e176e3 Move X11Compositor and WaylandCompositor in their own files 2023-09-08 09:49:40 +03:00
Vlad Zahorodnii
14ab38b596 composite.h -> compositor.h 2023-09-08 09:48:59 +03:00
Vlad Zahorodnii
9cf6011ba4 autotests: Don't be so paranoid about compositing type
In many cases it's irrelevant, what we care about is whether given effect
is loaded and performs its function. So remove these paranoid checks
except the tests where it's important to use OpenGL compositing.
2023-09-08 09:48:16 +03:00
l10n daemon script
faea125299 GIT_SILENT Sync po/docbooks with svn 2023-09-08 02:14:50 +00:00
Xaver Hugl
9dd236c87b plugins/qpa: use a surfaceless context for offscreen surfaces
According to Qt documentation, offscreen surfaces aren't actually for rendering,
so using a surffaceless context is ok
2023-09-07 21:13:16 +02:00
Xaver Hugl
c0e44378ca libkwineffects: move render time query check to OpenGlContext 2023-09-07 21:13:16 +02:00