/* * SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez * SPDX-FileCopyrightText: 2018 Drew DeVault * * SPDX-License-Identifier: LGPL-3.0-or-later */ #include "qwaylandlayershell_p.h" #include "qwaylandlayersurface_p.h" #include #include #include namespace LayerShellQt { QWaylandLayerSurface::QWaylandLayerSurface(QWaylandLayerShell *shell, QtWaylandClient::QWaylandWindow *window) : QtWaylandClient::QWaylandShellSurface(window) , QtWayland::zwlr_layer_surface_v1( // TODO: Specify namespace shell->get_layer_surface(window->waylandSurface()->object(), window->waylandScreen()->output(), QtWayland::zwlr_layer_shell_v1::layer_top, QStringLiteral("qt"))) { set_anchor(anchor_top | anchor_bottom | anchor_left | anchor_right); } QWaylandLayerSurface::~QWaylandLayerSurface() { destroy(); } void QWaylandLayerSurface::zwlr_layer_surface_v1_closed() { window()->window()->close(); } void QWaylandLayerSurface::zwlr_layer_surface_v1_configure(uint32_t serial, uint32_t width, uint32_t height) { ack_configure(serial); m_pendingSize = QSize(width, height); if (!m_configured) { m_configured = true; window()->resizeFromApplyConfigure(m_pendingSize); window()->handleExpose(QRect(QPoint(), m_pendingSize)); } else { // Later configures are resizes, so we have to queue them up for a time when we // are not painting to the window. window()->applyConfigureWhenPossible(); } } void QWaylandLayerSurface::applyConfigure() { window()->resizeFromApplyConfigure(m_pendingSize); } void QWaylandLayerSurface::setAnchor(uint anchor) { set_anchor(anchor); } void QWaylandLayerSurface::setExclusiveZone(int32_t zone) { set_exclusive_zone(zone); } void QWaylandLayerSurface::setMargins(const QMargins &margins) { set_margin(margins.top(), margins.right(), margins.bottom(), margins.left()); } void QWaylandLayerSurface::setKeyboardInteractivity(bool enabled) { set_keyboard_interactivity(enabled); } void QWaylandLayerSurface::setLayer(uint32_t layer) { if (zwlr_layer_surface_v1_get_version(object()) >= ZWLR_LAYER_SURFACE_V1_SET_LAYER_SINCE_VERSION) set_layer(layer); } }