Compare commits

..

1 Commits

Author SHA1 Message Date
7409bd4cc0 Make sure that the layer property gets initialised
Much like with the rest of the properties, we should set whichever value
was in the interface and then subscribe to changes in the property.
Otherwise, the layer doesn't get forwarded to the surface if the value
was set before its initialisation.

Signed-off-by: Victoria Fischer <victoria.fischer@mbition.io>
2024-09-24 15:06:13 +02:00
7 changed files with 13 additions and 146 deletions

View File

@ -32,7 +32,6 @@ include(KDEClangFormat)
include(ECMQtDeclareLoggingCategory)
include(ECMQmlModule)
include(KDEGitCommitHooks)
include(ECMGenerateQDoc)
find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS WaylandClient Qml)
find_package(WaylandScanner REQUIRED)

View File

@ -68,8 +68,6 @@ generate_export_header(LayerShellQtInterface
EXPORT_FILE_NAME LayerShellQt/layershellqt_export.h
)
ecm_generate_qdoc(LayerShellQtInterface layershellqt.qdocconf)
install(TARGETS layer-shell
LIBRARY DESTINATION ${KDE_INSTALL_QTPLUGINDIR}/wayland-shell-integration)

View File

@ -13,18 +13,12 @@
namespace LayerShellQt
{
/*!
* \class LayerShellQt::Shell
* \inmodule LayerShellQt
* \inheaderfile LayerShellQt/Shell
*
/**
* Sets the right environment so the shells created from now on use wlr-layer-shell.
*/
class LAYERSHELLQT_EXPORT Shell
{
public:
/*!
* Sets the right environment so the shells created from now on use wlr-layer-shell.
*/
static void useLayerShell();
};

View File

@ -18,18 +18,10 @@ namespace LayerShellQt
{
class WindowPrivate;
/*!
* \class LayerShellQt::Window
* \inmodule LayerShellQt
* \inheaderfile LayerShellQt/Window
*
* \brief A window.
*/
class LAYERSHELLQT_EXPORT Window : public QObject
{
Q_OBJECT
Q_PROPERTY(Anchors anchors READ anchors WRITE setAnchors NOTIFY anchorsChanged)
/*! \property LayerShellQt::Window::scope */
Q_PROPERTY(QString scope READ scope WRITE setScope)
Q_PROPERTY(QMargins margins READ margins WRITE setMargins NOTIFY marginsChanged)
Q_PROPERTY(qint32 exclusionZone READ exclusionZone WRITE setExclusiveZone NOTIFY exclusionZoneChanged)
@ -40,24 +32,17 @@ class LAYERSHELLQT_EXPORT Window : public QObject
public:
~Window() override;
/*!
* \value AnchorNone
* \value AnchorTop The top edge of the anchor rectangle
* \value AnchorBottom The bottom edge of the anchor rectangle
* \value AnchorLeft The left edge of the anchor rectangle
* \value AnchorRight The right edge of the anchor rectangle
*/
enum Anchor {
AnchorNone = 0,
AnchorTop = 1,
AnchorBottom = 2,
AnchorLeft = 4,
AnchorRight = 8,
AnchorTop = 1, ///< The top edge of the anchor rectangle
AnchorBottom = 2, ///< The bottom edge of the anchor rectangle
AnchorLeft = 4, ///< The left edge of the anchor rectangle
AnchorRight = 8, ///< The right edge of the anchor rectangle
};
Q_ENUM(Anchor);
Q_DECLARE_FLAGS(Anchors, Anchor)
/*!
/**
* This enum type is used to specify the layer where a surface can be put in.
*/
enum Layer {
@ -68,7 +53,7 @@ public:
};
Q_ENUM(Layer)
/*!
/**
* This enum type is used to specify how the layer surface handles keyboard focus.
*/
enum KeyboardInteractivity {
@ -78,7 +63,7 @@ public:
};
Q_ENUM(KeyboardInteractivity)
/*!
/**
* This enum type is used to specify which screen to place the surface on.
* ScreenFromQWindow (the default) reads QWindow::screen() while ScreenFromCompositor
* passes nil and lets the compositor decide.
@ -110,7 +95,7 @@ public:
void setScreenConfiguration(ScreenConfiguration screenConfiguration);
ScreenConfiguration screenConfiguration() const;
/*!
/**
* Sets a string based identifier for this window.
* This may be used by a compositor to determine stacking
* order within a given layer.
@ -118,17 +103,9 @@ public:
* May also be referred to as a role
*/
void setScope(const QString &scope);
/*!
* A string based identifier for this window.
* This may be used by a compositor to determine stacking
* order within a given layer.
*
* May also be referred to as a role
*/
QString scope() const;
/*!
/**
* Whether the QWindow should be closed when the layer surface is dismissed by the compositor.
* For example, if the associated screen has been removed.
*
@ -137,7 +114,7 @@ public:
void setCloseOnDismissed(bool close);
bool closeOnDismissed() const;
/*!
/**
* Gets the LayerShell Window for a given Qt Window
* Ownership is not transferred
*/

View File

@ -1,72 +0,0 @@
/*!
\module LayerShellQt
\title LayerShellQt C++ Classes
\cmakepackage LayerShellQt
\cmaketargetitem LayerShellQt::Interface
*/
/*!
\namespace LayerShellQt
\inmodule LayerShellQt
Stuff
*/
/*!
\qmlmodule org.kde.layershell
\title LayerShellQt QML Types
*/
/*!
\qmltype Window
\inqmlmodule org.kde.layershell
\nativetype LayerShellQt::Window
*/
/*!
\qmlproperty string Window::scope
A scope.
*/
/*!
\qmlproperty int Window::margins.top
\qmlproperty int Window::margins.bottom
\qmlproperty int Window::margins.left
\qmlproperty int Window::margins.right
Margins
*/
/*!
\qmlproperty int Window::exclusionZone
*/
/*!
\page layershellqt-index.html
\title LayerShellQt
Layer Shell
\section1 Using the Module
\include {module-use.qdocinc} {using the c++ api}
\section2 Building with CMake
\include {module-use.qdocinc} {building with cmake} {Widgets}
\section1 API Reference
\list
\li \l{LayerShellQt C++ Classes}
\li \l{LayerShellQt QML Types}
\endlist
\section1 Licenses
TODO
*/

View File

@ -1,30 +0,0 @@
include($KDE_DOCS/global/qt-module-defaults.qdocconf)
project = LayerShellQt
description = Qt component to allow applications to make use of the Wayland wl-layer-shell protocol
documentationinheaders = true
headerdirs = .
headers.fileextensions = "*.qdoc *.h"
outputdir = doc/html
outputformats = HTML
depends += \
qtcore
qhp.projects = LayerShellQt
qhp.LayerShellQt.file = layershellqt.qhp
qhp.LayerShellQt.namespace = org.kde.layershellqt.$QT_VERSION_TAG
qhp.LayerShellQt.virtualFolder = layershellqt
qhp.LayerShellQt.indexTitle = LayerShellQt
qhp.LayerShellQt.indexRoot =
qhp.LayerShellQt.subprojects = classes
qhp.LayerShellQt.subprojects.classes.title = C++ Classes
qhp.LayerShellQt.subprojects.classes.indexTitle = LayerShellQt C++ Classes
qhp.LayerShellQt.subprojects.classes.selectors = class fake:headerfile
qhp.LayerShellQt.subprojects.classes.sortPages = true

View File

@ -37,6 +37,7 @@ QWaylandLayerSurface::QWaylandLayerSurface(QWaylandLayerShellIntegration *shell,
}
}
init(shell->get_layer_surface(window->waylandSurface()->object(), output, m_interface->layer(), m_interface->scope()));
setLayer(m_interface->layer());
connect(m_interface, &Window::layerChanged, this, [this]() {
setLayer(m_interface->layer());
});