diff --git a/src/interfaces/window.cpp b/src/interfaces/window.cpp
index e387cb4..f7146a5 100644
--- a/src/interfaces/window.cpp
+++ b/src/interfaces/window.cpp
@@ -27,7 +27,7 @@ public:
QWindow *parentWindow;
QString scope = QStringLiteral("window");
Window::Anchors anchors = {Window::AnchorTop | Window::AnchorBottom | Window::AnchorLeft | Window::AnchorRight};
- int32_t exclusionZone = 0;
+ QSize exclusionZone;
Window::Anchor exclusiveEdge = Window::AnchorNone;
Window::KeyboardInteractivity keyboardInteractivity = Window::KeyboardInteractivityOnDemand;
Window::Layer layer = Window::LayerTop;
@@ -56,7 +56,7 @@ Window::Anchors Window::anchors() const
return d->anchors;
}
-void Window::setExclusiveZone(int32_t zone)
+void Window::setExclusiveZone(const QSize &zone)
{
if (d->exclusionZone != zone) {
d->exclusionZone = zone;
@@ -64,26 +64,11 @@ void Window::setExclusiveZone(int32_t zone)
}
}
-int32_t Window::exclusionZone() const
+QSize Window::exclusionZone() const
{
return d->exclusionZone;
}
-void Window::setExclusiveEdge(Window::Anchor edge)
-{
- if (d->exclusiveEdge == edge) {
- return;
- }
-
- d->exclusiveEdge = edge;
- Q_EMIT exclusiveEdgeChanged();
-}
-
-Window::Anchor Window::exclusiveEdge() const
-{
- return d->exclusiveEdge;
-}
-
void Window::setMargins(const QMargins &margins)
{
if (d->margins != margins) {
diff --git a/src/interfaces/window.h b/src/interfaces/window.h
index 9b476a4..a26ca5d 100644
--- a/src/interfaces/window.h
+++ b/src/interfaces/window.h
@@ -24,7 +24,7 @@ class LAYERSHELLQT_EXPORT Window : public QObject
Q_PROPERTY(Anchors anchors READ anchors WRITE setAnchors NOTIFY anchorsChanged)
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)
+ Q_PROPERTY(QSize exclusionZone READ exclusionZone WRITE setExclusiveZone NOTIFY exclusionZoneChanged)
Q_PROPERTY(Layer layer READ layer WRITE setLayer NOTIFY layerChanged)
Q_PROPERTY(KeyboardInteractivity keyboardInteractivity READ keyboardInteractivity WRITE setKeyboardInteractivity NOTIFY keyboardInteractivityChanged)
Q_PROPERTY(ScreenConfiguration screenConfiguration READ screenConfiguration WRITE setScreenConfiguration)
@@ -77,11 +77,8 @@ public:
void setAnchors(Anchors anchor);
Anchors anchors() const;
- void setExclusiveZone(int32_t zone);
- int32_t exclusionZone() const;
-
- void setExclusiveEdge(Window::Anchor edge);
- Window::Anchor exclusiveEdge() const;
+ void setExclusiveZone(const QSize &zone);
+ QSize exclusionZone() const;
void setMargins(const QMargins &margins);
QMargins margins() const;
diff --git a/src/qwaylandlayersurface.cpp b/src/qwaylandlayersurface.cpp
index 15ffc1d..dbd00f8 100644
--- a/src/qwaylandlayersurface.cpp
+++ b/src/qwaylandlayersurface.cpp
@@ -48,10 +48,6 @@ QWaylandLayerSurface::QWaylandLayerSurface(QWaylandLayerShellIntegration *shell,
connect(m_interface, &Window::exclusionZoneChanged, this, [this]() {
setExclusiveZone(m_interface->exclusionZone());
});
- setExclusiveEdge(m_interface->exclusiveEdge());
- connect(m_interface, &Window::exclusiveEdgeChanged, this, [this]() {
- setExclusiveEdge(m_interface->exclusiveEdge());
- });
setMargins(m_interface->margins());
connect(m_interface, &Window::marginsChanged, this, [this]() {
@@ -126,16 +122,9 @@ void QWaylandLayerSurface::setAnchor(uint anchor)
setWindowGeometry(window()->windowContentGeometry());
}
-void QWaylandLayerSurface::setExclusiveZone(int32_t zone)
+void QWaylandLayerSurface::setExclusiveZone(const QSize &zone)
{
- set_exclusive_zone(zone);
-}
-
-void QWaylandLayerSurface::setExclusiveEdge(uint32_t edge)
-{
- if (zwlr_layer_surface_v1_get_version(object()) >= ZWLR_LAYER_SURFACE_V1_SET_EXCLUSIVE_EDGE_SINCE_VERSION) {
- set_exclusive_edge(edge);
- }
+ set_exclusive_zone(zone.width(), zone.height());
}
void QWaylandLayerSurface::setMargins(const QMargins &margins)
diff --git a/src/qwaylandlayersurface_p.h b/src/qwaylandlayersurface_p.h
index c61e514..ca00565 100644
--- a/src/qwaylandlayersurface_p.h
+++ b/src/qwaylandlayersurface_p.h
@@ -35,8 +35,7 @@ public:
void attachPopup(QtWaylandClient::QWaylandShellSurface *popup) override;
void setAnchor(uint32_t anchor);
- void setExclusiveZone(int32_t zone);
- void setExclusiveEdge(uint32_t edge);
+ void setExclusiveZone(const QSize &zone);
void setMargins(const QMargins &margins);
void setKeyboardInteractivity(uint32_t interactivity);
void setLayer(uint32_t layer);
diff --git a/src/wlr-layer-shell-unstable-v1.xml b/src/wlr-layer-shell-unstable-v1.xml
index 75cfb15..652c754 100644
--- a/src/wlr-layer-shell-unstable-v1.xml
+++ b/src/wlr-layer-shell-unstable-v1.xml
@@ -184,7 +184,8 @@
Exclusive zone is double-buffered, see wl_surface.commit.
-
+
+
@@ -387,19 +388,5 @@
-
-
-
-
- Requests an edge for the exclusive zone to apply.
- The edge must be one the surface is anchored to, otherwise a protocol
- error will be raised.
- The exclusive edge will be automatically deduced from anchor points
- when possible, but when when the surface is anchored to a corner,
- it will be necessary to set it explicitly to disambiguate, as is not
- possible to deduce which one of the two corner edges should be used.
-
-
-