diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-10-28 21:31:39 +0100 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-10-28 21:31:39 +0100 |
| commit | 9e227a52c0bba1338344e1113f5aabfa21599380 (patch) | |
| tree | 1b18d425b61c0b365336da294137fec722e84138 /src/managers/KeybindManager.cpp | |
| parent | 1a767b021bc0f2b1c2cc7a56d8f70ff1a574cac6 (diff) | |
allow cyclenext on null focus
Diffstat (limited to 'src/managers/KeybindManager.cpp')
| -rw-r--r-- | src/managers/KeybindManager.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index 0f5c4faa..8c4fa24b 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -1422,9 +1422,6 @@ void CKeybindManager::resizeWindow(std::string args) { } void CKeybindManager::circleNext(std::string arg) { - if (!g_pCompositor->m_pLastWindow) - return; - auto switchToWindow = [&](CWindow* PWINDOWTOCHANGETO) { if (PWINDOWTOCHANGETO == g_pCompositor->m_pLastWindow || !PWINDOWTOCHANGETO) return; @@ -1447,6 +1444,17 @@ void CKeybindManager::circleNext(std::string arg) { } }; + if (!g_pCompositor->m_pLastWindow) { + // if we have a clear focus, find the first window and get the next focusable. + if (g_pCompositor->getWindowsOnWorkspace(g_pCompositor->m_pLastMonitor->activeWorkspace) > 0) { + const auto PWINDOW = g_pCompositor->getNextWindowOnWorkspace(g_pCompositor->getFirstWindowOnWorkspace(g_pCompositor->m_pLastMonitor->activeWorkspace), true); + + switchToWindow(PWINDOW); + } + + return; + } + if (arg == "last" || arg == "l" || arg == "prev" || arg == "p") switchToWindow(g_pCompositor->getPrevWindowOnWorkspace(g_pCompositor->m_pLastWindow, true)); else |
