diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp index 627da575..54000a6a 100644 --- a/src/events/Windows.cpp +++ b/src/events/Windows.cpp @@ -375,14 +375,23 @@ void Events::listener_mapWindow(void* owner, void* data) { // move the window const auto OLDWORKSPACE = PWINDOW->m_iWorkspaceID; - std::stringstream stream; - stream << std::hex << (uintptr_t)PWINDOW; - std::string hexStr(stream.str()); - - if (requestedWorkspace != "special") { - g_pKeybindManager->m_mDispatchers["movetoworkspacesilent"](requestedWorkspace + ",address:0x" + hexStr); + if (g_pCompositor->m_pLastWindow == PWINDOW) { + if (requestedWorkspace != "special") { + g_pKeybindManager->m_mDispatchers["movetoworkspacesilent"](requestedWorkspace); + } else { + g_pKeybindManager->m_mDispatchers["movetoworkspace"]("special"); + } } else { - g_pKeybindManager->m_mDispatchers["movetoworkspace"]("special,address:0x" + hexStr); + // yes this is fucking weird no clue why this won't work for everyone + std::stringstream stream; + stream << std::hex << (uintptr_t)PWINDOW; + std::string hexStr(stream.str()); + + if (requestedWorkspace != "special") { + g_pKeybindManager->m_mDispatchers["movetoworkspacesilent"](requestedWorkspace + ",address:0x" + hexStr); + } else { + g_pKeybindManager->m_mDispatchers["movetoworkspace"]("special,address:0x" + hexStr); + } } g_pCompositor->forceReportSizesToWindowsOnWorkspace(OLDWORKSPACE);