Commit Graph
25 Commits
Author SHA1 Message Date
Vlad Zahorodnii 2d65b01d87 Port to QWaylandShellSurface::setWindowSize() 2024-05-29 15:25:11 +03:00
Vlad Zahorodnii e8594be884 Use QWaylandWindow::windowContentGeometry() to set the initial preferred size
This matches the geometry used in the setWindowGeometry() function.
2024-04-04 14:18:38 +03:00
Vlad Zahorodnii 0a31923938 Update the desired size when the anchors change
When the anchor changes, the desired size should be updated to avoid
the compositor posting a protocol error.

BUG: 484990
2024-04-04 11:59:49 +03:00
Vlad Zahorodnii 127d817aa1 Guard against calling set_size while applying a configure event more explicitly
Depending on code path taken, geometry.size() == m_pendingSize can
produce incorrect results.

If a configure event is applied, it's fine.

If the window is resized by user, m_pendingSize will have outdated value,
and setWindowGeometry() can ignore future size updates that are valid.

In hindsight, we need special hooks in the QWaylandWindow to request and
apply new geometry. Rather than have one function that deals with all cases.
2024-04-03 15:15:37 +03:00
Vlad Zahorodnii 6f0bca5593 Revert "Add a (temporary) way to attach popups to layer surfaces"
This reverts commit fdab1544fb.

Qt 6.6 is out with all the necessary multi-shell apis.
2023-12-08 11:55:52 +00:00
Vlad Zahorodnii ddb0490592 Change default keyboard interactivity to OnDemand
OnDemand is a better default as it still ensures that the window will
receive keyboard input by default, but it's less aggressive.
2023-11-30 10:06:18 +00:00
Vlad Zahorodnii 3c116e7550 Revert "Change default keyboard interactivity from exclusive to none"
This reverts commit be63783888.

It broke keyboard input in sddm greeter. While defaulting to a non-spec
value is not great, it's also not that critical. It might be worth
considering synchronizing Qt::WindowDoesNotAcceptFocus with the keyboard
interactivity flag, but the tricky part is that the keyboard interactivty
is not just a boolean.

BUG: 477251
2023-11-30 10:06:18 +00:00
Vlad Zahorodnii 721c0ae334 Remove an inappropriate log message 2023-09-06 14:52:55 +03:00
Vlad Zahorodnii 9750fd8be7 Avoid emitting excessive changed signals
If the layer shell surface properties don't change, don't emit the
changed signals and issue wayland requests.
2023-05-17 14:57:09 +03:00
Vlad Zahorodnii 5e88f449b0 Introduce Window::closeOnDismissed() flag
This can be used to control the sending of QEvent::Close event.
2023-05-16 17:58:48 +03:00
Vlad Zahorodnii 497d50c4df Emit Window::layerChanged signal
Otherwise it's not possible to change layers at runtime.
2023-05-13 12:18:12 +03:00
Vlad Zahorodnii 511b92f4ab Port to QWaylandShellSurface::attachPopup() 2023-04-22 12:11:04 +03:00
Vlad Zahorodnii fdab1544fb Add a (temporary) way to attach popups to layer surfaces
The new API is temporary. It's needed to help us with porting plasma to
the layer shell protocol until Qt 6.6 is released, which includes
QWaylandShellSurface::attachPopup().
2023-04-22 12:11:04 +03:00
Vlad Zahorodnii 2985398375 Port to QWaylandWindow::setShellIntegration()
With QWaylandWindow::setShellIntegration(), it's possible to use
xdg-shell and layer-shell protocols in the same process. It's important
for plasmashell, where we want to use the layer shell protocol for
special surfaces such as the desktop background, and the xdg shell
protocol for dialogs.

In order to make a QWindow use the layer shell protocol, you need to
call LayerShellQt::Window::get() before the window is mapped.
2023-04-22 12:11:01 +03:00
Vlad ZahorodniiandAleix Pol Gonzalez 8d1aeb7bf1 Store QWaylandLayerShell using a QScopedPointer
This is to ensure that the QWaylandLayerShell will be eventually
destroyed.
2021-04-20 16:02:33 +00:00
Vlad ZahorodniiandAleix Pol Gonzalez 93f3ed2c07 Fix a memory leak
The dynamically allocated QtWayland::zwlr_layer_shell_v1 object in
QWaylandLayerShellIntegration::registryLayer() isn't deleted anywhere.
2021-04-20 16:02:33 +00:00
Vlad Zahorodnii efd32eed53 Add missing parenthesis
This is to make the compiler happier.
2021-04-20 18:38:24 +03:00
Vlad Zahorodnii 11a811061f Introduce KeyboardInteractivity enum 2021-04-20 15:27:43 +03:00
Vlad Zahorodnii f684097c0f Properly guard zwlr_layer_shell_v1 destructor request
The destructor request was added in version 3.
2021-04-09 12:49:49 +00:00
Vlad Zahorodnii b4c62f7926 Expose set_layer
The set_layer request allows to move a surface to another layer after
creating it.
2021-04-09 12:49:49 +00:00
Vlad Zahorodnii 31ce504f99 Fix layer-shell version selection logic
If an app blindly binds a global, it may crash if the compositor
supports slightly newer version of the protocol.
2021-04-08 09:26:16 +03:00
Vlad ZahorodniiandAleix Pol Gonzalez 9816f32bc4 Remove redundant includes
qwayland-wlr-layer-shell-unstable-v1.h is already included in
corresponding header files.
2021-04-07 16:49:31 +00:00
Vlad ZahorodniiandAleix Pol Gonzalez c46249bba0 Remove Q_NULLPTR usage
This project requires C++17, which has the nullptr keyword.
2021-04-07 16:05:02 +00:00
Vlad Zahorodnii 834551f6b7 Remove hard-coded zwlr_layer_shell_v1 interface name
This makes code more neater.
2021-04-07 18:19:43 +03:00
Vlad Zahorodnii 840f40db73 Fix clang warning
The warning itself:

> /home/tsdgeos/devel/kde/layer-shell-qt/src/qwaylandlayershell_p.h:23:24: note: did you mean class here?
>      QWaylandLayerShell(struct QtWayland::zwlr_layer_shell_v1 *shell);
2021-04-05 09:23:52 +03:00