Compare commits
No commits in common. "6e03dc5b5d93c3d699d1a6e57df401db0766f6a2" and "4569e78e253c689493c1413b369a8b81e59ca35c" have entirely different histories.
6e03dc5b5d
...
4569e78e25
|
@ -4,14 +4,14 @@
|
||||||
cmake_minimum_required(VERSION 3.16)
|
cmake_minimum_required(VERSION 3.16)
|
||||||
|
|
||||||
project(layershellqt)
|
project(layershellqt)
|
||||||
set(PROJECT_VERSION "6.0.80")
|
set(PROJECT_VERSION "5.90.90")
|
||||||
set(PROJECT_VERSION_MAJOR 6)
|
set(PROJECT_VERSION_MAJOR 6)
|
||||||
|
|
||||||
set(CMAKE_C_STANDARD 99)
|
set(CMAKE_C_STANDARD 99)
|
||||||
|
|
||||||
set(QT_MIN_VERSION "6.6.0")
|
set(QT_MIN_VERSION "6.5.0")
|
||||||
#set(KF6_MIN_VERSION "5.240.0")
|
set(KF6_MIN_VERSION "5.240.0")
|
||||||
#set(KDE_COMPILERSETTINGS_LEVEL "5.82")
|
set(KDE_COMPILERSETTINGS_LEVEL "5.82")
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 20)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
@ -26,11 +26,10 @@ include(ECMSetupVersion)
|
||||||
include(ECMDeprecationSettings)
|
include(ECMDeprecationSettings)
|
||||||
include(ECMGenerateHeaders)
|
include(ECMGenerateHeaders)
|
||||||
include(CMakePackageConfigHelpers)
|
include(CMakePackageConfigHelpers)
|
||||||
#include(FeatureSummary)
|
include(FeatureSummary)
|
||||||
include(GenerateExportHeader)
|
include(GenerateExportHeader)
|
||||||
#include(KDEClangFormat)
|
include(KDEClangFormat)
|
||||||
include(ECMQtDeclareLoggingCategory)
|
include(ECMQtDeclareLoggingCategory)
|
||||||
include(ECMQmlModule)
|
|
||||||
|
|
||||||
|
|
||||||
find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS WaylandClient Qml)
|
find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS WaylandClient Qml)
|
||||||
|
@ -45,22 +44,20 @@ set_package_properties(Wayland PROPERTIES
|
||||||
TYPE REQUIRED)
|
TYPE REQUIRED)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu90")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu90")
|
||||||
|
|
||||||
set(CMAKE_AUTOMOC ON)
|
|
||||||
|
|
||||||
ecm_setup_version(${PROJECT_VERSION} VARIABLE_PREFIX LAYERSHELLQT
|
ecm_setup_version(${PROJECT_VERSION} VARIABLE_PREFIX LAYERSHELLQT
|
||||||
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/layershellqt_version.h"
|
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/layershellqt_version.h"
|
||||||
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/LayerShellQtConfigVersion.cmake"
|
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/LayerShellQtConfigVersion.cmake"
|
||||||
SOVERSION ${PROJECT_VERSION_MAJOR})
|
SOVERSION ${PROJECT_VERSION_MAJOR})
|
||||||
|
|
||||||
file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
|
file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
|
||||||
#kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
|
kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
|
||||||
|
|
||||||
ecm_set_disabled_deprecation_versions(QT 6.5
|
ecm_set_disabled_deprecation_versions(QT 6.5
|
||||||
KF 5.240
|
KF 5.240
|
||||||
)
|
)
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
#add_subdirectory(tests)
|
add_subdirectory(tests)
|
||||||
|
|
||||||
set(CMAKECONFIG_INSTALL_DIR ${KDE_INSTALL_CMAKEPACKAGEDIR}/LayerShellQt)
|
set(CMAKECONFIG_INSTALL_DIR ${KDE_INSTALL_CMAKEPACKAGEDIR}/LayerShellQt)
|
||||||
install(EXPORT LayerShellQtTargets
|
install(EXPORT LayerShellQtTargets
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
Forked to reduce kde deps / build for qt6 as its not stable in nixpkgs, really only minor cmake patches
|
|
||||||
|
|
||||||
# LayerShellQt
|
# LayerShellQt
|
||||||
|
|
||||||
This component is meant for applications to be able to easily use clients based on wlr-layer-shell.
|
This component is meant for applications to be able to easily use clients based on wlr-layer-shell.
|
||||||
|
|
23
default.nix
23
default.nix
|
@ -1,23 +0,0 @@
|
||||||
{ stdenv, cmake, qt6, wayland, wayland-scanner, wayland-protocols, pkg-config, libsForQt5 }: stdenv.mkDerivation {
|
|
||||||
pname = "layer-shell-qt-nokde";
|
|
||||||
version = "6.0.80";
|
|
||||||
|
|
||||||
src = ./.;
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
cmake
|
|
||||||
pkg-config
|
|
||||||
wayland-scanner
|
|
||||||
libsForQt5.extra-cmake-modules
|
|
||||||
];
|
|
||||||
|
|
||||||
dontWrapQtApps = true;
|
|
||||||
|
|
||||||
buildInputs = [
|
|
||||||
qt6.qtbase
|
|
||||||
qt6.qtdeclarative
|
|
||||||
qt6.qtwayland
|
|
||||||
wayland
|
|
||||||
wayland-protocols
|
|
||||||
];
|
|
||||||
}
|
|
33
shell.nix
33
shell.nix
|
@ -1,33 +0,0 @@
|
||||||
{ pkgs ? import <nixpkgs> {} }: pkgs.mkShell {
|
|
||||||
nativeBuildInputs = with pkgs; [
|
|
||||||
cmake
|
|
||||||
wayland-scanner
|
|
||||||
libsForQt5.extra-cmake-modules
|
|
||||||
|
|
||||||
clang-tools_17
|
|
||||||
];
|
|
||||||
|
|
||||||
buildInputs = with pkgs; [
|
|
||||||
qt6.qtbase
|
|
||||||
qt6.qtdeclarative
|
|
||||||
qt6.qtwayland
|
|
||||||
wayland
|
|
||||||
wayland-protocols
|
|
||||||
];
|
|
||||||
|
|
||||||
shellHook = ''
|
|
||||||
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc)
|
|
||||||
|
|
||||||
# Add Qt-related environment variables.
|
|
||||||
# https://discourse.nixos.org/t/qt-development-environment-on-a-flake-system/23707/5
|
|
||||||
setQtEnvironment=$(mktemp)
|
|
||||||
random=$(openssl rand -base64 20 | sed "s/[^a-zA-Z0-9]//g")
|
|
||||||
makeWrapper "$(type -p sh)" "$setQtEnvironment" "''${qtWrapperArgs[@]}" --argv0 "$random"
|
|
||||||
sed "/$random/d" -i "$setQtEnvironment"
|
|
||||||
source "$setQtEnvironment"
|
|
||||||
|
|
||||||
# qmlls does not account for the import path and bases its search off qtbase's path.
|
|
||||||
# The actual imports come from qtdeclarative. This directs qmlls to the correct imports.
|
|
||||||
export QMLLS_BUILD_DIRS=$(pwd)/build:$QML2_IMPORT_PATH
|
|
||||||
'';
|
|
||||||
}
|
|
|
@ -1,12 +1,9 @@
|
||||||
# SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleix.pol_gonzalez@mercedes-benz.com>
|
# SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleix.pol_gonzalez@mercedes-benz.com>
|
||||||
# SPDX-License-Identifier: BSD-3-Clause
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
set(BUILD_SHARED_LIBS OFF)
|
qt_add_qml_module(LayerShellQtQml
|
||||||
|
|
||||||
ecm_add_qml_module(LayerShellQtQml
|
|
||||||
URI "org.kde.layershell"
|
URI "org.kde.layershell"
|
||||||
VERSION 1.0
|
VERSION 1.0
|
||||||
SOURCES layershellqtplugin.cpp)
|
SOURCES layershellqtplugin.cpp)
|
||||||
target_link_libraries(LayerShellQtQml PRIVATE Qt::Qml LayerShellQtInterface)
|
target_link_libraries(LayerShellQtQml PRIVATE Qt::Qml LayerShellQtInterface)
|
||||||
|
|
||||||
ecm_finalize_qml_module(LayerShellQtQml DESTINATION ${KDE_INSTALL_QMLDIR})
|
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
|
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
#include "../qwaylandlayershellintegration_p.h"
|
#include "../qwaylandlayershellintegration_p.h"
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
|
||||||
|
#include "../qwaylandlayersurface_p.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <layershellqt_logging.h>
|
#include <layershellqt_logging.h>
|
||||||
|
|
||||||
|
@ -138,6 +141,21 @@ void Window::setCloseOnDismissed(bool close)
|
||||||
d->closeOnDismissed = close;
|
d->closeOnDismissed = close;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
|
||||||
|
void Window::attachPopup(QWindow *window, xdg_popup *popup)
|
||||||
|
{
|
||||||
|
auto waylandWindow = dynamic_cast<QtWaylandClient::QWaylandWindow *>(window->handle());
|
||||||
|
if (!waylandWindow) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto shellSurface = dynamic_cast<QWaylandLayerSurface *>(waylandWindow->shellSurface());
|
||||||
|
if (shellSurface) {
|
||||||
|
shellSurface->get_popup(popup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
Window::Window(QWindow *window)
|
Window::Window(QWindow *window)
|
||||||
: QObject(window)
|
: QObject(window)
|
||||||
, d(new WindowPrivate(window))
|
, d(new WindowPrivate(window))
|
||||||
|
|
|
@ -14,6 +14,10 @@
|
||||||
|
|
||||||
#include "layershellqt_export.h"
|
#include "layershellqt_export.h"
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
|
||||||
|
struct xdg_popup;
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace LayerShellQt
|
namespace LayerShellQt
|
||||||
{
|
{
|
||||||
class WindowPrivate;
|
class WindowPrivate;
|
||||||
|
@ -116,6 +120,10 @@ public:
|
||||||
*/
|
*/
|
||||||
static Window *get(QWindow *window);
|
static Window *get(QWindow *window);
|
||||||
|
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK(6, 6, 0)
|
||||||
|
static void attachPopup(QWindow *window, xdg_popup *popup);
|
||||||
|
#endif
|
||||||
|
|
||||||
static Window *qmlAttachedProperties(QObject *object);
|
static Window *qmlAttachedProperties(QObject *object);
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
|
|
|
@ -100,6 +100,7 @@ void QWaylandLayerSurface::zwlr_layer_surface_v1_configure(uint32_t serial, uint
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)
|
||||||
void QWaylandLayerSurface::attachPopup(QtWaylandClient::QWaylandShellSurface *popup)
|
void QWaylandLayerSurface::attachPopup(QtWaylandClient::QWaylandShellSurface *popup)
|
||||||
{
|
{
|
||||||
std::any anyRole = popup->surfaceRole();
|
std::any anyRole = popup->surfaceRole();
|
||||||
|
@ -110,6 +111,7 @@ void QWaylandLayerSurface::attachPopup(QtWaylandClient::QWaylandShellSurface *po
|
||||||
qCWarning(LAYERSHELLQT) << "Cannot attach popup of unknown type";
|
qCWarning(LAYERSHELLQT) << "Cannot attach popup of unknown type";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void QWaylandLayerSurface::applyConfigure()
|
void QWaylandLayerSurface::applyConfigure()
|
||||||
{
|
{
|
||||||
|
@ -119,7 +121,6 @@ void QWaylandLayerSurface::applyConfigure()
|
||||||
void QWaylandLayerSurface::setAnchor(uint anchor)
|
void QWaylandLayerSurface::setAnchor(uint anchor)
|
||||||
{
|
{
|
||||||
set_anchor(anchor);
|
set_anchor(anchor);
|
||||||
setWindowGeometry(window()->windowContentGeometry());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void QWaylandLayerSurface::setExclusiveZone(int32_t zone)
|
void QWaylandLayerSurface::setExclusiveZone(int32_t zone)
|
||||||
|
@ -145,8 +146,8 @@ void QWaylandLayerSurface::setLayer(uint32_t layer)
|
||||||
|
|
||||||
void QWaylandLayerSurface::setWindowGeometry(const QRect &geometry)
|
void QWaylandLayerSurface::setWindowGeometry(const QRect &geometry)
|
||||||
{
|
{
|
||||||
const bool horizontallyConstrained = m_interface->anchors().testFlags({Window::AnchorLeft, Window::AnchorRight});
|
const bool horizontallyConstrained = m_interface->anchors() & (Window::AnchorLeft & Window::AnchorRight);
|
||||||
const bool verticallyConstrained = m_interface->anchors().testFlags({Window::AnchorTop, Window::AnchorBottom});
|
const bool verticallyConstrained = m_interface->anchors() & (Window::AnchorTop & Window::AnchorBottom);
|
||||||
|
|
||||||
QSize size = geometry.size();
|
QSize size = geometry.size();
|
||||||
if (horizontallyConstrained) {
|
if (horizontallyConstrained) {
|
||||||
|
|
|
@ -32,7 +32,9 @@ public:
|
||||||
{
|
{
|
||||||
return m_configured;
|
return m_configured;
|
||||||
}
|
}
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0)
|
||||||
void attachPopup(QtWaylandClient::QWaylandShellSurface *popup) override;
|
void attachPopup(QtWaylandClient::QWaylandShellSurface *popup) override;
|
||||||
|
#endif
|
||||||
|
|
||||||
void setAnchor(uint32_t anchor);
|
void setAnchor(uint32_t anchor);
|
||||||
void setExclusiveZone(int32_t zone);
|
void setExclusiveZone(int32_t zone);
|
||||||
|
|
Loading…
Reference in a new issue