diff options
| author | vaxerski <vaxry@vaxry.net> | 2023-12-24 15:08:48 +0100 |
|---|---|---|
| committer | vaxerski <vaxry@vaxry.net> | 2023-12-24 15:08:48 +0100 |
| commit | 5aab4a96e3c01cce181b42d51140f7ed4e555d8b (patch) | |
| tree | f1ceccea228f493c0afd0e07239b277fb1e54206 /src/Compositor.cpp | |
| parent | ff75f991a50d9e82bb4ee4cacace551225ef2038 (diff) | |
dispatchers: add tiled/floating to cyclenext
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 4ea83e89..a2b11727 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -1624,7 +1624,7 @@ CWindow* CCompositor::getWindowInDirection(CWindow* pWindow, char dir) { return nullptr; } -CWindow* CCompositor::getNextWindowOnWorkspace(CWindow* pWindow, bool focusableOnly) { +CWindow* CCompositor::getNextWindowOnWorkspace(CWindow* pWindow, bool focusableOnly, std::optional<bool> floating) { bool gotToWindow = false; for (auto& w : m_vWindows) { if (w.get() != pWindow && !gotToWindow) @@ -1635,11 +1635,17 @@ CWindow* CCompositor::getNextWindowOnWorkspace(CWindow* pWindow, bool focusableO continue; } + if (floating.has_value() && w->m_bIsFloating != floating.value()) + continue; + if (w->m_iWorkspaceID == pWindow->m_iWorkspaceID && w->m_bIsMapped && !w->isHidden() && (!focusableOnly || !w->m_bNoFocus)) return w.get(); } for (auto& w : m_vWindows) { + if (floating.has_value() && w->m_bIsFloating != floating.value()) + continue; + if (w.get() != pWindow && w->m_iWorkspaceID == pWindow->m_iWorkspaceID && w->m_bIsMapped && !w->isHidden() && (!focusableOnly || !w->m_bNoFocus)) return w.get(); } @@ -1647,7 +1653,7 @@ CWindow* CCompositor::getNextWindowOnWorkspace(CWindow* pWindow, bool focusableO return nullptr; } -CWindow* CCompositor::getPrevWindowOnWorkspace(CWindow* pWindow, bool focusableOnly) { +CWindow* CCompositor::getPrevWindowOnWorkspace(CWindow* pWindow, bool focusableOnly, std::optional<bool> floating) { bool gotToWindow = false; for (auto& w : m_vWindows | std::views::reverse) { if (w.get() != pWindow && !gotToWindow) @@ -1658,11 +1664,17 @@ CWindow* CCompositor::getPrevWindowOnWorkspace(CWindow* pWindow, bool focusableO continue; } + if (floating.has_value() && w->m_bIsFloating != floating.value()) + continue; + if (w->m_iWorkspaceID == pWindow->m_iWorkspaceID && w->m_bIsMapped && !w->isHidden() && (!focusableOnly || !w->m_bNoFocus)) return w.get(); } for (auto& w : m_vWindows | std::views::reverse) { + if (floating.has_value() && w->m_bIsFloating != floating.value()) + continue; + if (w.get() != pWindow && w->m_iWorkspaceID == pWindow->m_iWorkspaceID && w->m_bIsMapped && !w->isHidden() && (!focusableOnly || !w->m_bNoFocus)) return w.get(); } |
