Compare commits

..

9 Commits

Author SHA1 Message Date
6ef7c56df3 Update version number for 5.25.5
GIT_SILENT
2022-09-06 12:34:03 +01:00
90569f5e67 Update version number for 5.25.4
GIT_SILENT
2022-08-02 11:17:59 +01:00
ab09e56d72 Update version number for 5.25.3
GIT_SILENT
2022-07-12 10:43:02 +01:00
424005733c Update version number for 5.25.2
GIT_SILENT
2022-06-28 11:21:22 +01:00
6e27a6ab42 Update qt5 version requirement to 5.15.2
GIT_SILENT
2022-06-27 10:31:50 +01:00
f001835a16 Update kf5 version requirement to 5.94
GIT_SILENT
2022-06-27 10:31:50 +01:00
1b5a182e2e Update version number for 5.25.1
GIT_SILENT
2022-06-21 11:29:48 +01:00
84b68ca1dd Update version number for 5.25.0
GIT_SILENT
2022-06-09 08:46:08 +00:00
9573abb542 Mark required deps as required
BUG: 454912
(cherry picked from commit 34e7c90c2d)
2022-06-06 12:40:57 +02:00
6 changed files with 45 additions and 55 deletions

View File

@ -2,8 +2,6 @@
# SPDX-License-Identifier: CC0-1.0
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/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/freebsd-qt6.yml

View File

@ -4,13 +4,13 @@
cmake_minimum_required(VERSION 3.16)
project(layershellqt)
set(PROJECT_VERSION "5.27.10")
set(PROJECT_VERSION "5.25.5")
set(PROJECT_VERSION_MAJOR 5)
set(CMAKE_C_STANDARD 99)
set(QT_MIN_VERSION "5.15.2")
set(KF5_MIN_VERSION "5.102.0")
set(KF5_MIN_VERSION "5.94")
set(KDE_COMPILERSETTINGS_LEVEL "5.82")
set(CMAKE_CXX_STANDARD 17)
@ -23,7 +23,6 @@ include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(ECMSetupVersion)
include(ECMDeprecationSettings)
include(ECMGenerateHeaders)
include(CMakePackageConfigHelpers)
include(FeatureSummary)
@ -31,7 +30,6 @@ include(GenerateExportHeader)
include(KDEClangFormat)
include(ECMQtDeclareLoggingCategory)
find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS WaylandClient Qml)
if (QT_MAJOR_VERSION EQUAL "5")
find_package(Qt5XkbCommonSupport REQUIRED PRIVATE)
@ -55,15 +53,10 @@ ecm_setup_version(${PROJECT_VERSION} VARIABLE_PREFIX LAYERSHELLQT
file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
ecm_set_disabled_deprecation_versions(QT 5.15.2
KF 5.101
)
add_subdirectory(src)
add_subdirectory(tests)
set(CMAKECONFIG_INSTALL_DIR ${KDE_INSTALL_CMAKEPACKAGEDIR}/LayerShellQt)
set(CMAKECONFIG_INSTALL_DIR ${KDE_INSTALL_LIBDIR}/cmake/LayerShellQt)
install(EXPORT LayerShellQtTargets
NAMESPACE LayerShellQt::
DESTINATION ${CMAKECONFIG_INSTALL_DIR}

View File

@ -1,6 +1,3 @@
# SPDX-FileCopyrightText: None
# SPDX-License-Identifier: CC0-1.0
maintainer:
- vladz
description: Layer Shell Qt

View File

@ -5,10 +5,10 @@
*/
#include "window.h"
#include "../qwaylandlayersurface_p.h"
#include <layershellqt_logging.h>
#include <QPointer>
#include <optional>
#include <private/qwaylandshellsurface_p.h>
#include <private/qwaylandwindow_p.h>
using namespace LayerShellQt;
@ -27,7 +27,8 @@ public:
Window::KeyboardInteractivity keyboardInteractivity = Window::KeyboardInteractivityExclusive;
Window::Layer layer = Window::LayerTop;
QMargins margins;
std::optional<QPointer<QScreen>> desiredOutput;
QWaylandLayerSurface *getSurface() const;
QPointer<QScreen> desiredOutput;
};
static QMap<QWindow *, Window *> s_map;
@ -40,7 +41,9 @@ Window::~Window()
void Window::setAnchors(Anchors anchors)
{
d->anchors = anchors;
Q_EMIT anchorsChanged();
if (auto surface = d->getSurface()) {
surface->setAnchor(anchors);
}
}
Window::Anchors Window::anchors() const
@ -51,7 +54,9 @@ Window::Anchors Window::anchors() const
void Window::setExclusiveZone(int32_t zone)
{
d->exclusionZone = zone;
Q_EMIT exclusionZoneChanged();
if (auto surface = d->getSurface()) {
surface->setExclusiveZone(zone);
}
}
int32_t Window::exclusionZone() const
@ -62,7 +67,9 @@ int32_t Window::exclusionZone() const
void Window::setMargins(const QMargins &margins)
{
d->margins = margins;
Q_EMIT marginsChanged();
if (auto surface = d->getSurface()) {
surface->setMargins(margins);
}
}
QMargins Window::margins() const
@ -73,7 +80,9 @@ QMargins Window::margins() const
void Window::setKeyboardInteractivity(KeyboardInteractivity interactivity)
{
d->keyboardInteractivity = interactivity;
Q_EMIT keyboardInteractivityChanged();
if (auto surface = d->getSurface()) {
surface->setKeyboardInteractivity(interactivity);
}
}
Window::KeyboardInteractivity Window::keyboardInteractivity() const
@ -84,6 +93,9 @@ Window::KeyboardInteractivity Window::keyboardInteractivity() const
void Window::setLayer(Layer layer)
{
d->layer = layer;
if (auto surface = d->getSurface()) {
surface->setLayer(layer);
}
}
void Window::setScope(const QString &scope)
@ -104,12 +116,7 @@ Window::Layer Window::layer() const
QScreen *Window::desiredOutput() const
{
// Don't use .value_or here to avoid a temporary QPointer
if (d->desiredOutput.has_value()) {
return d->desiredOutput.value();
}
return d->parentWindow->screen();
return d->desiredOutput;
}
void Window::setDesiredOutput(QScreen *output)
@ -132,3 +139,21 @@ Window *Window::get(QWindow *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;
}

View File

@ -93,13 +93,6 @@ public:
*/
static Window *get(QWindow *window);
Q_SIGNALS:
void anchorsChanged();
void exclusionZoneChanged();
void marginsChanged();
void keyboardInteractivityChanged();
void layerChanged();
private:
Window(QWindow *window);
QScopedPointer<WindowPrivate> d;

View File

@ -36,31 +36,15 @@ QWaylandLayerSurface::QWaylandLayerSurface(QWaylandLayerShell *shell, QtWaylandC
}
}
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());
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());
connect(interface, &Window::marginsChanged, this, [this, interface]() {
setMargins(interface->margins());
});
setKeyboardInteractivity(interface->keyboardInteractivity());
connect(interface, &Window::keyboardInteractivityChanged, this, [this, interface]() {
setKeyboardInteractivity(interface->keyboardInteractivity());
});
setExclusiveZone(interface->exclusionZone());
QSize size = window->surfaceSize();
const Window::Anchors anchors = interface->anchors();
if ((anchors & Window::AnchorLeft) && (anchors & Window::AnchorRight)) {
size.setWidth(0);
}