summaryrefslogtreecommitdiff
path: root/src/managers
diff options
context:
space:
mode:
authorNihal Jere <nihal@nihaljere.xyz>2025-08-15 14:38:28 +0000
committerGitHub <noreply@github.com>2025-08-15 15:38:28 +0100
commitaaedce596ec27742ea8f00a20607913e8a3e83db (patch)
tree1d464e90b678083b18c3a31a5ebccd3e89a87d56 /src/managers
parent60d769a89908c29e19100059985db15a7b6bab6a (diff)
protocols: implement ext-data-control (#11323)
This protocol has superseded wlr-data-control
Diffstat (limited to 'src/managers')
-rw-r--r--src/managers/ProtocolManager.cpp3
-rw-r--r--src/managers/SeatManager.cpp3
2 files changed, 6 insertions, 0 deletions
diff --git a/src/managers/ProtocolManager.cpp b/src/managers/ProtocolManager.cpp
index 91691926..b70d3b7d 100644
--- a/src/managers/ProtocolManager.cpp
+++ b/src/managers/ProtocolManager.cpp
@@ -63,6 +63,7 @@
#include "../protocols/XDGTag.hpp"
#include "../protocols/XDGBell.hpp"
#include "../protocols/ExtWorkspace.hpp"
+#include "../protocols/ExtDataDevice.hpp"
#include "../helpers/Monitor.hpp"
#include "../render/Renderer.hpp"
@@ -190,6 +191,7 @@ CProtocolManager::CProtocolManager() {
PROTO::xdgTag = makeUnique<CXDGToplevelTagProtocol>(&xdg_toplevel_tag_manager_v1_interface, 1, "XDGTag");
PROTO::xdgBell = makeUnique<CXDGSystemBellProtocol>(&xdg_system_bell_v1_interface, 1, "XDGBell");
PROTO::extWorkspace = makeUnique<CExtWorkspaceProtocol>(&ext_workspace_manager_v1_interface, 1, "ExtWorkspace");
+ PROTO::extDataDevice = makeUnique<CExtDataDeviceProtocol>(&ext_data_control_manager_v1_interface, 1, "ExtDataDevice");
if (*PENABLECM)
PROTO::colorManagement = makeUnique<CColorManagementProtocol>(&wp_color_manager_v1_interface, 1, "ColorManagement", *PDEBUGCM);
@@ -292,6 +294,7 @@ CProtocolManager::~CProtocolManager() {
PROTO::xdgTag.reset();
PROTO::xdgBell.reset();
PROTO::extWorkspace.reset();
+ PROTO::extDataDevice.reset();
for (auto& [_, lease] : PROTO::lease) {
lease.reset();
diff --git a/src/managers/SeatManager.cpp b/src/managers/SeatManager.cpp
index 67752e2a..bc4f2dfc 100644
--- a/src/managers/SeatManager.cpp
+++ b/src/managers/SeatManager.cpp
@@ -2,6 +2,7 @@
#include "../protocols/core/Seat.hpp"
#include "../protocols/core/DataDevice.hpp"
#include "../protocols/DataDeviceWlr.hpp"
+#include "../protocols/ExtDataDevice.hpp"
#include "../protocols/PrimarySelection.hpp"
#include "../protocols/core/Compositor.hpp"
#include "../Compositor.hpp"
@@ -578,6 +579,7 @@ void CSeatManager::setCurrentSelection(SP<IDataSource> source) {
m_selection.destroySelection = source->m_events.destroy.listen([this] { setCurrentSelection(nullptr); });
PROTO::data->setSelection(source);
PROTO::dataWlr->setSelection(source, false);
+ PROTO::extDataDevice->setSelection(source, false);
}
m_events.setSelection.emit();
@@ -603,6 +605,7 @@ void CSeatManager::setCurrentPrimarySelection(SP<IDataSource> source) {
m_selection.destroyPrimarySelection = source->m_events.destroy.listen([this] { setCurrentPrimarySelection(nullptr); });
PROTO::primarySelection->setSelection(source);
PROTO::dataWlr->setSelection(source, true);
+ PROTO::extDataDevice->setSelection(source, true);
}
m_events.setPrimarySelection.emit();