summaryrefslogtreecommitdiff
path: root/src/managers/KeybindManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/managers/KeybindManager.cpp')
-rw-r--r--src/managers/KeybindManager.cpp14
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