diff options
| author | shezdy <77217897+shezdy@users.noreply.github.com> | 2024-02-25 17:05:20 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-26 00:05:20 +0000 |
| commit | a14f6b570f7dc99d81db1a8cccbae986c3f98f64 (patch) | |
| tree | d8d2861c494ec705f3dc6d2c86060046cdf5fef4 /src/managers/KeybindManager.cpp | |
| parent | 7f35bff7203909adaa279c56ce2d84c957377568 (diff) | |
keybinds: fix focuswindow for fullscreen (#4840)
* focuswindow fix
* fix format
---------
Co-authored-by: ddmetz <77217897+ddmetz@users.noreply.github.com>
Diffstat (limited to 'src/managers/KeybindManager.cpp')
| -rw-r--r-- | src/managers/KeybindManager.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index de0f5fbc..143b7fda 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -1748,17 +1748,31 @@ void CKeybindManager::focusWindow(std::string regexp) { Debug::log(LOG, "Focusing to window name: {}", PWINDOW->m_szTitle); + const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID); + if (!PWORKSPACE) { + Debug::log(ERR, "BUG THIS: null workspace in focusWindow"); + return; + } + if (g_pCompositor->m_pLastMonitor->activeWorkspace != PWINDOW->m_iWorkspaceID) { Debug::log(LOG, "Fake executing workspace to move focus"); - const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID); - if (!PWORKSPACE) { - Debug::log(ERR, "BUG THIS: null workspace in focusWindow"); - return; - } changeworkspace(PWORKSPACE->getConfigName()); } - g_pCompositor->focusWindow(PWINDOW); + if (PWORKSPACE->m_bHasFullscreenWindow) { + 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); + + 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()); } |
