diff options
| author | Vaxry <vaxry@vaxry.net> | 2024-06-16 20:56:50 +0200 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2024-06-16 20:56:50 +0200 |
| commit | d5ef10abf429355246abcda65fe4c15d886fad7c (patch) | |
| tree | f7b06602fb72ccacc165c615025a25d45b7b789a /src/protocols/core/DataDevice.cpp | |
| parent | 172ee1cadaabd3ba4df330f9cdd02fb520b59e71 (diff) | |
data-device: properly abort drag on missing device
sometimes there is no focused device (e.g. when dnd'ing on nothing or xwayland) in which case abort would fail to send cancelled to the source.
ref #6543
Diffstat (limited to 'src/protocols/core/DataDevice.cpp')
| -rw-r--r-- | src/protocols/core/DataDevice.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/protocols/core/DataDevice.cpp b/src/protocols/core/DataDevice.cpp index 986d1176..2d50ff15 100644 --- a/src/protocols/core/DataDevice.cpp +++ b/src/protocols/core/DataDevice.cpp @@ -644,11 +644,13 @@ void CWLDataDeviceProtocol::abortDrag() { g_pInputManager->unsetCursorImage(); dnd.overriddenCursor = false; - if (!dnd.focusedDevice || !dnd.currentSource) + if (!dnd.focusedDevice && !dnd.currentSource) return; - dnd.focusedDevice->sendLeave(); - dnd.currentSource->cancelled(); + if (dnd.focusedDevice) + dnd.focusedDevice->sendLeave(); + if (dnd.currentSource) + dnd.currentSource->cancelled(); dnd.focusedDevice.reset(); dnd.currentSource.reset(); |
