diff options
author | Paul Olav Tvete <paul.tvete@qt.io> | 2021-10-18 16:41:12 +0200 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@qt.io> | 2021-12-02 09:08:40 +0100 |
commit | d89c8920f3b82dd2098971b5a66c4b9c75da5af0 (patch) | |
tree | b7f35e03485f1aa8725e30870f3066b34d24ea94 /src/plugins/shellintegration/xdg-shell | |
parent | 0204df32ee7417db3156ef3c70bcf762d7e9fb0a (diff) | |
download | qtwayland-d89c8920f3b82dd2098971b5a66c4b9c75da5af0.tar.gz |
Introduce new qt-shell and an API for custom shells
Adds a new API for writing custom shell extensions. This API is supported,
but semi-public. Binary compatibility is not guaranteed.
Also adds qt-shell, a new shell that maps directly to the QWindow API, and
provides functionality that Qt provides on other window systems, such as
absolute window positions and window activation. This shell is not intended
for use on the desktop.
This is a squashed commit of a development branch consisting of approximately
60 changes. Contributors:
Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Paul Olav Tvete <paul.tvete@qt.io>
Task-number: QTBUG-94330
Task-number: QTBUG-91542
Change-Id: I419b6bd8179fe03e4da47d328c7ff4b4795b8a91
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Diffstat (limited to 'src/plugins/shellintegration/xdg-shell')
-rw-r--r-- | src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp | 20 | ||||
-rw-r--r-- | src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h | 2 |
2 files changed, 11 insertions, 11 deletions
diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp index fcdd435c..8390d76f 100644 --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp @@ -47,21 +47,21 @@ QT_BEGIN_NAMESPACE namespace QtWaylandClient { -bool QWaylandXdgShellIntegration::initialize(QWaylandDisplay *display) +bool QWaylandXdgShellIntegration::initialize() { - for (QWaylandDisplay::RegistryGlobal global : display->globals()) { - if (global.interface == QLatin1String("xdg_wm_base")) { - m_xdgShell.reset(new QWaylandXdgShell(display, global.id, global.version)); - break; - } - } - + if (m_xdgShell) + return true; + wl_registry *registry; + uint32_t id; + uint32_t version; + bool found = findGlobal(QLatin1String("xdg_wm_base"), ®istry, &id, &version); + if (found) + m_xdgShell.reset(new QWaylandXdgShell(m_display, id, version)); if (!m_xdgShell) { qCDebug(lcQpaWayland) << "Couldn't find global xdg_wm_base for xdg-shell stable"; return false; } - - return QWaylandShellIntegration::initialize(display); + return true; } QWaylandShellSurface *QWaylandXdgShellIntegration::createShellSurface(QWaylandWindow *window) diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h index fced9eb0..cd54dd48 100644 --- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h +++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h @@ -63,7 +63,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandXdgShellIntegration : public QWaylandShell { public: QWaylandXdgShellIntegration() {} - bool initialize(QWaylandDisplay *display) override; + bool initialize() override; QWaylandShellSurface *createShellSurface(QWaylandWindow *window) override; void *nativeResourceForWindow(const QByteArray &resource, QWindow *window) override; |