mirror of
https://invent.kde.org/plasma/layer-shell-qt.git
synced 2025-07-14 02:54:31 -04:00
Initial commit
This commit is contained in:
82
src/qwaylandlayersurface.cpp
Normal file
82
src/qwaylandlayersurface.cpp
Normal file
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#include "qwaylandlayershell_p.h"
|
||||
#include "qwaylandlayersurface_p.h"
|
||||
|
||||
#include <qwayland-wlr-layer-shell-unstable-v1.h>
|
||||
#include <QtWaylandClient/private/qwaylandwindow_p.h>
|
||||
#include <QtWaylandClient/private/qwaylandsurface_p.h>
|
||||
#include <QtWaylandClient/private/qwaylandscreen_p.h>
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user