From 981540207490f402d1382eb3df149ece6db8b809 Mon Sep 17 00:00:00 2001 From: Vaxry Date: Mon, 26 Feb 2024 00:15:59 +0000 Subject: [PATCH] keybinds: focus floating on top of fs --- src/managers/KeybindManager.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index 143b7fda..4bd652be 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -1763,16 +1763,25 @@ void CKeybindManager::focusWindow(std::string regexp) { const auto FSWINDOW = g_pCompositor->getFullscreenWindowOnWorkspace(PWORKSPACE->m_iID); const auto FSMODE = PWORKSPACE->m_efFullscreenMode; - if (FSWINDOW != PWINDOW && !PWINDOW->m_bPinned) - g_pCompositor->setWindowFullscreen(FSWINDOW, false, FULLSCREEN_FULL); + if (PWINDOW->m_bIsFloating) { + // don't make floating implicitly fs + if (!PWINDOW->m_bCreatedOverFullscreen) { + g_pCompositor->changeWindowZOrder(PWINDOW, true); + g_pCompositor->updateFullscreenFadeOnWorkspace(PWORKSPACE); + } - g_pCompositor->focusWindow(PWINDOW); + g_pCompositor->focusWindow(PWINDOW); + } else { + if (FSWINDOW != PWINDOW && !PWINDOW->m_bPinned) + g_pCompositor->setWindowFullscreen(FSWINDOW, false, FULLSCREEN_FULL); - if (FSWINDOW != PWINDOW && !PWINDOW->m_bPinned) - g_pCompositor->setWindowFullscreen(PWINDOW, true, FSMODE); - } else { + g_pCompositor->focusWindow(PWINDOW); + + if (FSWINDOW != PWINDOW && !PWINDOW->m_bPinned) + g_pCompositor->setWindowFullscreen(PWINDOW, true, FSMODE); + } + } else g_pCompositor->focusWindow(PWINDOW); - } g_pCompositor->warpCursorTo(PWINDOW->middle()); }