From 9f7a96b997d90c4c188f3837e02859a25a05611e Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Sat, 14 Dec 2024 16:19:56 +0100 Subject: core/data: Use pointer focus for DnD operations (#8707) fixes #7737 --- src/managers/input/InputManager.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/managers/input/InputManager.cpp') diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp index d1eb7c4c..fdaa6bfa 100644 --- a/src/managers/input/InputManager.cpp +++ b/src/managers/input/InputManager.cpp @@ -374,8 +374,9 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus) { if (g_pPointerManager->softwareLockedFor(PMONITOR->self.lock()) > 0 && !skipFrameSchedule) g_pCompositor->scheduleFrameForMonitor(g_pCompositor->m_pLastMonitor.lock(), Aquamarine::IOutput::AQ_SCHEDULE_CURSOR_MOVE); - // grabs - if (g_pSeatManager->seatGrab && !g_pSeatManager->seatGrab->accepts(foundSurface)) { + // FIXME: This will be disabled during DnD operations because we do not exactly follow the spec + // xdg-popup grabs should be keyboard-only, while they are absolute in our case... + if (g_pSeatManager->seatGrab && !g_pSeatManager->seatGrab->accepts(foundSurface) && !PROTO::data->dndActive()) { if (m_bHardInput || refocus) { g_pSeatManager->setGrab(nullptr); return; // setGrab will refocus -- cgit v1.2.3