From aaedce596ec27742ea8f00a20607913e8a3e83db Mon Sep 17 00:00:00 2001 From: Nihal Jere Date: Fri, 15 Aug 2025 14:38:28 +0000 Subject: protocols: implement ext-data-control (#11323) This protocol has superseded wlr-data-control --- src/managers/ProtocolManager.cpp | 3 +++ src/managers/SeatManager.cpp | 3 +++ 2 files changed, 6 insertions(+) (limited to 'src/managers') 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(&xdg_toplevel_tag_manager_v1_interface, 1, "XDGTag"); PROTO::xdgBell = makeUnique(&xdg_system_bell_v1_interface, 1, "XDGBell"); PROTO::extWorkspace = makeUnique(&ext_workspace_manager_v1_interface, 1, "ExtWorkspace"); + PROTO::extDataDevice = makeUnique(&ext_data_control_manager_v1_interface, 1, "ExtDataDevice"); if (*PENABLECM) PROTO::colorManagement = makeUnique(&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 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 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(); -- cgit v1.2.3