mirror of
https://invent.kde.org/plasma/layer-shell-qt.git
synced 2025-07-27 01:14:42 -04:00
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.
51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
/*
|
|
* SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
|
|
* SPDX-FileCopyrightText: 2018 Drew DeVault <sir@cmpwn.com>
|
|
*
|
|
* SPDX-License-Identifier: LGPL-3.0-or-later
|
|
*/
|
|
|
|
#ifndef _LAYERSURFACE_H
|
|
#define _LAYERSURFACE_H
|
|
|
|
#include <wayland-client.h>
|
|
|
|
#include "layershellqt_export.h"
|
|
#include <QtWaylandClient/private/qwaylandshellsurface_p.h>
|
|
#include <qwayland-wlr-layer-shell-unstable-v1.h>
|
|
|
|
namespace LayerShellQt
|
|
{
|
|
|
|
class LAYERSHELLQT_EXPORT QWaylandLayerSurface : public QtWaylandClient::QWaylandShellSurface, public QtWayland::zwlr_layer_surface_v1
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
QWaylandLayerSurface(zwlr_layer_shell_v1 *shell, QtWaylandClient::QWaylandWindow *window);
|
|
~QWaylandLayerSurface() override;
|
|
|
|
bool isExposed() const override
|
|
{
|
|
return m_configured;
|
|
}
|
|
|
|
void setAnchor(uint32_t anchor);
|
|
void setExclusiveZone(int32_t zone);
|
|
void setMargins(const QMargins &margins);
|
|
void setKeyboardInteractivity(uint32_t interactivity);
|
|
void setLayer(uint32_t layer);
|
|
|
|
void applyConfigure() override;
|
|
|
|
private:
|
|
void zwlr_layer_surface_v1_configure(uint32_t serial, uint32_t width, uint32_t height) override;
|
|
void zwlr_layer_surface_v1_closed() override;
|
|
|
|
QSize m_pendingSize;
|
|
bool m_configured = false;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|