summaryrefslogtreecommitdiff
path: root/src/protocols/XDGDecoration.cpp
diff options
context:
space:
mode:
authorjmanc3 <jman12316@live.com>2025-09-02 04:49:24 -0500
committerGitHub <noreply@github.com>2025-09-02 11:49:24 +0200
commit00423bb738d568f4903412fdabdf53e2c63fde7c (patch)
treef78f76289ce5511abfb33b6eeb7a894241ac2bd8 /src/protocols/XDGDecoration.cpp
parent8a64168a43f7d50810f428af0b34013f796ca2c8 (diff)
plugins: expose csd functionality (#11551)
Diffstat (limited to 'src/protocols/XDGDecoration.cpp')
-rw-r--r--src/protocols/XDGDecoration.cpp28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/protocols/XDGDecoration.cpp b/src/protocols/XDGDecoration.cpp
index b093fbb8..0339db6b 100644
--- a/src/protocols/XDGDecoration.cpp
+++ b/src/protocols/XDGDecoration.cpp
@@ -17,15 +17,35 @@ CXDGDecoration::CXDGDecoration(SP<CZxdgToplevelDecorationV1> resource_, wl_resou
}
LOGM(LOG, "setMode: {}. {} MODE_SERVER_SIDE as reply.", modeString, (mode == ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE ? "Sending" : "Ignoring and sending"));
- m_resource->sendConfigure(ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE);
+ auto sendMode = xdgModeOnRequestCSD(mode);
+ m_resource->sendConfigure(sendMode);
+ mostRecentlySent = sendMode;
+ mostRecentlyRequested = mode;
});
m_resource->setUnsetMode([this](CZxdgToplevelDecorationV1*) {
LOGM(LOG, "unsetMode. Sending MODE_SERVER_SIDE.");
- m_resource->sendConfigure(ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE);
+ auto sendMode = xdgModeOnReleaseCSD();
+ m_resource->sendConfigure(sendMode);
+ mostRecentlySent = sendMode;
+ mostRecentlyRequested = 0;
});
- m_resource->sendConfigure(ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE);
+ auto sendMode = xdgDefaultModeCSD();
+ m_resource->sendConfigure(sendMode);
+ mostRecentlySent = sendMode;
+}
+
+zxdgToplevelDecorationV1Mode CXDGDecoration::xdgDefaultModeCSD() {
+ return ZXDG_TOPLEVEL_DECORATION_V1_MODE_SERVER_SIDE;
+}
+
+zxdgToplevelDecorationV1Mode CXDGDecoration::xdgModeOnRequestCSD(uint32_t modeRequestedByClient) {
+ return xdgDefaultModeCSD();
+}
+
+zxdgToplevelDecorationV1Mode CXDGDecoration::xdgModeOnReleaseCSD() {
+ return xdgDefaultModeCSD();
}
bool CXDGDecoration::good() {
@@ -71,4 +91,4 @@ void CXDGDecorationProtocol::onGetDecoration(CZxdgDecorationManagerV1* pMgr, uin
m_decorations.erase(xdgToplevel);
return;
}
-} \ No newline at end of file
+}