summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/protocols/core/DataDevice.cpp7
-rw-r--r--src/protocols/core/DataDevice.hpp6
2 files changed, 11 insertions, 2 deletions
diff --git a/src/protocols/core/DataDevice.cpp b/src/protocols/core/DataDevice.cpp
index a42933ed..4a24e861 100644
--- a/src/protocols/core/DataDevice.cpp
+++ b/src/protocols/core/DataDevice.cpp
@@ -298,10 +298,17 @@ void CWLDataDeviceResource::sendDataOffer(SP<IDataOffer> offer) {
void CWLDataDeviceResource::sendEnter(uint32_t serial, SP<CWLSurfaceResource> surf, const Vector2D& local, SP<IDataOffer> offer) {
if (const auto WL = offer->getWayland(); WL)
m_resource->sendEnterRaw(serial, surf->getResource()->resource(), wl_fixed_from_double(local.x), wl_fixed_from_double(local.y), WL->m_resource->resource());
+
+ m_entered = surf;
+
// FIXME: X11
}
void CWLDataDeviceResource::sendLeave() {
+ if (!m_entered)
+ return;
+
+ m_entered.reset();
m_resource->sendLeave();
}
diff --git a/src/protocols/core/DataDevice.hpp b/src/protocols/core/DataDevice.hpp
index 8b52933e..b4ad378f 100644
--- a/src/protocols/core/DataDevice.hpp
+++ b/src/protocols/core/DataDevice.hpp
@@ -111,8 +111,10 @@ class CWLDataDeviceResource : public IDataDevice {
WP<CWLDataDeviceResource> m_self;
private:
- SP<CWlDataDevice> m_resource;
- wl_client* m_client = nullptr;
+ SP<CWlDataDevice> m_resource;
+ wl_client* m_client = nullptr;
+
+ WP<CWLSurfaceResource> m_entered;
friend class CWLDataDeviceProtocol;
};