From 9564a4cd127d2d24324fc8a9adb6096960248ec8 Mon Sep 17 00:00:00 2001 From: vaxerski Date: Sat, 6 Aug 2022 22:26:32 +0200 Subject: added misc:always_follow_on_dnd --- src/events/Misc.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/events/Misc.cpp') diff --git a/src/events/Misc.cpp b/src/events/Misc.cpp index 38219e57..e6e29f11 100644 --- a/src/events/Misc.cpp +++ b/src/events/Misc.cpp @@ -103,6 +103,13 @@ void Events::listener_startDrag(wl_listener* listener, void* data) { g_pInputManager->m_sDrag.hyprListener_destroyIcon.initCallback(&wlrDrag->icon->events.destroy, &Events::listener_destroyDragIcon, &g_pInputManager->m_sDrag, "DragIcon"); g_pInputManager->m_sDrag.hyprListener_commitIcon.initCallback(&wlrDrag->icon->surface->events.commit, &Events::listener_commitDragIcon, &g_pInputManager->m_sDrag, "DragIcon"); } + + static auto *const PFOLLOWONDND = &g_pConfigManager->getConfigValuePtr("misc:always_follow_on_dnd")->intValue; + + if (*PFOLLOWONDND) + g_pInputManager->m_pFollowOnDnDBegin = g_pCompositor->m_pLastWindow; + else + g_pInputManager->m_pFollowOnDnDBegin = nullptr; } void Events::listener_destroyDrag(void* owner, void* data) { @@ -113,6 +120,11 @@ void Events::listener_destroyDrag(void* owner, void* data) { g_pInputManager->m_sDrag.hyprListener_destroy.removeCallback(); g_pInputManager->refocus(); + + if (g_pInputManager->m_pFollowOnDnDBegin) + g_pCompositor->focusWindow(g_pInputManager->m_pFollowOnDnDBegin); + + g_pInputManager->m_pFollowOnDnDBegin = nullptr; } void Events::listener_mapDragIcon(void* owner, void* data) { -- cgit v1.2.3