wayland/layershell: refactor layer shell surface integration

In addition to the much needed cleanup:

- The bridge/extension type is now directly tied to the QWindow
instead of the WlrLayershell object, and is much smaller.
- Layer requests are now comitted via polish instead of for each
change individually.
This commit is contained in:
outfoxxed 2025-05-13 14:43:48 -07:00
parent 6a8284dae3
commit e0cff677a5
Signed by untrusted user: outfoxxed
GPG key ID: 4C88A185FB89301E
13 changed files with 366 additions and 495 deletions

View file

@ -7,7 +7,7 @@
#include "../core/plugin.hpp"
#ifdef QS_WAYLAND_WLR_LAYERSHELL
#include "wlr_layershell.hpp"
#include "wlr_layershell/wlr_layershell.hpp"
#endif
void installPlatformMenuHook(); // NOLINT(misc-use-internal-linkage)
@ -39,7 +39,12 @@ class WaylandPlugin: public QsEnginePlugin {
void registerTypes() override {
#ifdef QS_WAYLAND_WLR_LAYERSHELL
qmlRegisterType<WaylandPanelInterface>("Quickshell._WaylandOverlay", 1, 0, "PanelWindow");
qmlRegisterType<qs::wayland::layershell::WaylandPanelInterface>(
"Quickshell._WaylandOverlay",
1,
0,
"PanelWindow"
);
// If any types are defined inside a module using QML_ELEMENT then all QML_ELEMENT types
// will not be registered. This can be worked around with a module import which makes