mirror of
https://invent.kde.org/plasma/layer-shell-qt.git
synced 2025-07-14 11:04:20 -04:00
Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
84b68ca1dd | |||
9573abb542 |
@ -2,8 +2,6 @@
|
|||||||
# SPDX-License-Identifier: CC0-1.0
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
include:
|
include:
|
||||||
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/reuse-lint.yml
|
|
||||||
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml
|
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml
|
||||||
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml
|
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml
|
||||||
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux-qt6.yml
|
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux-qt6.yml
|
||||||
- https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd-qt6.yml
|
|
||||||
|
@ -4,13 +4,13 @@
|
|||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
project(layershellqt)
|
project(layershellqt)
|
||||||
set(PROJECT_VERSION "5.26.1")
|
set(PROJECT_VERSION "5.25.0")
|
||||||
set(PROJECT_VERSION_MAJOR 5)
|
set(PROJECT_VERSION_MAJOR 5)
|
||||||
|
|
||||||
set(CMAKE_C_STANDARD 99)
|
set(CMAKE_C_STANDARD 99)
|
||||||
|
|
||||||
set(QT_MIN_VERSION "5.15.2")
|
set(QT_MIN_VERSION "5.15.0")
|
||||||
set(KF5_MIN_VERSION "5.98.0")
|
set(KF5_MIN_VERSION "5.91")
|
||||||
set(KDE_COMPILERSETTINGS_LEVEL "5.82")
|
set(KDE_COMPILERSETTINGS_LEVEL "5.82")
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
# SPDX-FileCopyrightText: None
|
|
||||||
# SPDX-License-Identifier: CC0-1.0
|
|
||||||
|
|
||||||
maintainer:
|
maintainer:
|
||||||
- vladz
|
- vladz
|
||||||
description: Layer Shell Qt
|
description: Layer Shell Qt
|
||||||
|
@ -5,9 +5,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
|
#include "../qwaylandlayersurface_p.h"
|
||||||
#include <layershellqt_logging.h>
|
#include <layershellqt_logging.h>
|
||||||
|
#include <private/qwaylandshellsurface_p.h>
|
||||||
#include <QPointer>
|
#include <private/qwaylandwindow_p.h>
|
||||||
|
|
||||||
using namespace LayerShellQt;
|
using namespace LayerShellQt;
|
||||||
|
|
||||||
@ -26,6 +27,7 @@ public:
|
|||||||
Window::KeyboardInteractivity keyboardInteractivity = Window::KeyboardInteractivityExclusive;
|
Window::KeyboardInteractivity keyboardInteractivity = Window::KeyboardInteractivityExclusive;
|
||||||
Window::Layer layer = Window::LayerTop;
|
Window::Layer layer = Window::LayerTop;
|
||||||
QMargins margins;
|
QMargins margins;
|
||||||
|
QWaylandLayerSurface *getSurface() const;
|
||||||
QPointer<QScreen> desiredOutput;
|
QPointer<QScreen> desiredOutput;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -39,7 +41,9 @@ Window::~Window()
|
|||||||
void Window::setAnchors(Anchors anchors)
|
void Window::setAnchors(Anchors anchors)
|
||||||
{
|
{
|
||||||
d->anchors = anchors;
|
d->anchors = anchors;
|
||||||
Q_EMIT anchorsChanged();
|
if (auto surface = d->getSurface()) {
|
||||||
|
surface->setAnchor(anchors);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Window::Anchors Window::anchors() const
|
Window::Anchors Window::anchors() const
|
||||||
@ -50,7 +54,9 @@ Window::Anchors Window::anchors() const
|
|||||||
void Window::setExclusiveZone(int32_t zone)
|
void Window::setExclusiveZone(int32_t zone)
|
||||||
{
|
{
|
||||||
d->exclusionZone = zone;
|
d->exclusionZone = zone;
|
||||||
Q_EMIT exclusionZoneChanged();
|
if (auto surface = d->getSurface()) {
|
||||||
|
surface->setExclusiveZone(zone);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t Window::exclusionZone() const
|
int32_t Window::exclusionZone() const
|
||||||
@ -61,7 +67,9 @@ int32_t Window::exclusionZone() const
|
|||||||
void Window::setMargins(const QMargins &margins)
|
void Window::setMargins(const QMargins &margins)
|
||||||
{
|
{
|
||||||
d->margins = margins;
|
d->margins = margins;
|
||||||
Q_EMIT marginsChanged();
|
if (auto surface = d->getSurface()) {
|
||||||
|
surface->setMargins(margins);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QMargins Window::margins() const
|
QMargins Window::margins() const
|
||||||
@ -72,7 +80,9 @@ QMargins Window::margins() const
|
|||||||
void Window::setKeyboardInteractivity(KeyboardInteractivity interactivity)
|
void Window::setKeyboardInteractivity(KeyboardInteractivity interactivity)
|
||||||
{
|
{
|
||||||
d->keyboardInteractivity = interactivity;
|
d->keyboardInteractivity = interactivity;
|
||||||
Q_EMIT keyboardInteractivityChanged();
|
if (auto surface = d->getSurface()) {
|
||||||
|
surface->setKeyboardInteractivity(interactivity);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Window::KeyboardInteractivity Window::keyboardInteractivity() const
|
Window::KeyboardInteractivity Window::keyboardInteractivity() const
|
||||||
@ -83,6 +93,9 @@ Window::KeyboardInteractivity Window::keyboardInteractivity() const
|
|||||||
void Window::setLayer(Layer layer)
|
void Window::setLayer(Layer layer)
|
||||||
{
|
{
|
||||||
d->layer = layer;
|
d->layer = layer;
|
||||||
|
if (auto surface = d->getSurface()) {
|
||||||
|
surface->setLayer(layer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::setScope(const QString &scope)
|
void Window::setScope(const QString &scope)
|
||||||
@ -126,3 +139,21 @@ Window *Window::get(QWindow *window)
|
|||||||
}
|
}
|
||||||
return new Window(window);
|
return new Window(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QWaylandLayerSurface *WindowPrivate::getSurface() const
|
||||||
|
{
|
||||||
|
if (!parentWindow) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
auto ww = dynamic_cast<QtWaylandClient::QWaylandWindow *>(parentWindow->handle());
|
||||||
|
if (!ww) {
|
||||||
|
qCDebug(LAYERSHELLQT) << "window not a wayland window" << parentWindow;
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
QWaylandLayerSurface *s = qobject_cast<QWaylandLayerSurface *>(ww->shellSurface());
|
||||||
|
if (!s) {
|
||||||
|
qCDebug(LAYERSHELLQT) << "window not using wlr-layer-shell" << parentWindow << ww->shellSurface();
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
@ -93,13 +93,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
static Window *get(QWindow *window);
|
static Window *get(QWindow *window);
|
||||||
|
|
||||||
Q_SIGNALS:
|
|
||||||
void anchorsChanged();
|
|
||||||
void exclusionZoneChanged();
|
|
||||||
void marginsChanged();
|
|
||||||
void keyboardInteractivityChanged();
|
|
||||||
void layerChanged();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Window(QWindow *window);
|
Window(QWindow *window);
|
||||||
QScopedPointer<WindowPrivate> d;
|
QScopedPointer<WindowPrivate> d;
|
||||||
|
@ -36,31 +36,15 @@ QWaylandLayerSurface::QWaylandLayerSurface(QWaylandLayerShell *shell, QtWaylandC
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
init(shell->get_layer_surface(window->waylandSurface()->object(), output, interface->layer(), interface->scope()));
|
init(shell->get_layer_surface(window->waylandSurface()->object(), output, interface->layer(), interface->scope()));
|
||||||
connect(interface, &Window::layerChanged, this, [this, interface]() {
|
|
||||||
setLayer(interface->layer());
|
Window::Anchors anchors = interface->anchors();
|
||||||
});
|
|
||||||
|
|
||||||
set_anchor(interface->anchors());
|
set_anchor(interface->anchors());
|
||||||
connect(interface, &Window::anchorsChanged, this, [this, interface]() {
|
|
||||||
set_anchor(interface->anchors());
|
|
||||||
});
|
|
||||||
setExclusiveZone(interface->exclusionZone());
|
|
||||||
connect(interface, &Window::exclusionZoneChanged, this, [this, interface]() {
|
|
||||||
setExclusiveZone(interface->exclusionZone());
|
|
||||||
});
|
|
||||||
|
|
||||||
setMargins(interface->margins());
|
setMargins(interface->margins());
|
||||||
connect(interface, &Window::marginsChanged, this, [this, interface]() {
|
|
||||||
setMargins(interface->margins());
|
|
||||||
});
|
|
||||||
|
|
||||||
setKeyboardInteractivity(interface->keyboardInteractivity());
|
setKeyboardInteractivity(interface->keyboardInteractivity());
|
||||||
connect(interface, &Window::keyboardInteractivityChanged, this, [this, interface]() {
|
setExclusiveZone(interface->exclusionZone());
|
||||||
setKeyboardInteractivity(interface->keyboardInteractivity());
|
|
||||||
});
|
|
||||||
|
|
||||||
QSize size = window->surfaceSize();
|
QSize size = window->surfaceSize();
|
||||||
const Window::Anchors anchors = interface->anchors();
|
|
||||||
if ((anchors & Window::AnchorLeft) && (anchors & Window::AnchorRight)) {
|
if ((anchors & Window::AnchorLeft) && (anchors & Window::AnchorRight)) {
|
||||||
size.setWidth(0);
|
size.setWidth(0);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user