diff options
| author | zakk4223 <zakk@rsdio.com> | 2024-04-18 21:44:51 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-19 02:44:51 +0100 |
| commit | 4d0a63523751a590a521fd873f770825023069ae (patch) | |
| tree | 3777908a5f7414895ad7963695423289340587fb /src/Compositor.cpp | |
| parent | 82222342f10a7eff0ec9be972153e740d0f95213 (diff) | |
workspace: Add 'v' flag for workspace selector that counts only visible windows (#5628)
* Add 'v' flag for workspace selector: counts only visible windows
* extra commit because I'm dumb
* guard
Diffstat (limited to 'src/Compositor.cpp')
| -rw-r--r-- | src/Compositor.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 47679169..ae1c352c 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -1273,23 +1273,34 @@ void CCompositor::sanityCheckWorkspaces() { } } -int CCompositor::getWindowsOnWorkspace(const int& id, std::optional<bool> onlyTiled) { +int CCompositor::getWindowsOnWorkspace(const int& id, std::optional<bool> onlyTiled, std::optional<bool> onlyVisible) { int no = 0; for (auto& w : m_vWindows) { - if (w->workspaceID() == id && w->m_bIsMapped && !(onlyTiled.has_value() && !w->m_bIsFloating != onlyTiled.value())) - no++; + if (w->workspaceID() != id || !w->m_bIsMapped) + continue; + if (onlyTiled.has_value() && w->m_bIsFloating == onlyTiled.value()) + continue; + if (onlyVisible.has_value() && w->isHidden() == onlyVisible.value()) + continue; + no++; } return no; } -int CCompositor::getGroupsOnWorkspace(const int& id, std::optional<bool> onlyTiled) { +int CCompositor::getGroupsOnWorkspace(const int& id, std::optional<bool> onlyTiled, std::optional<bool> onlyVisible) { int no = 0; for (auto& w : m_vWindows) { - if (w->workspaceID() == id && w->m_bIsMapped && !(onlyTiled.has_value() && !w->m_bIsFloating != onlyTiled.value()) && w->m_sGroupData.head) - no++; + if (w->workspaceID() != id || !w->m_bIsMapped) + continue; + if (!w->m_sGroupData.head) + continue; + if (onlyTiled.has_value() && w->m_bIsFloating == onlyTiled.value()) + continue; + if (onlyVisible.has_value() && w->isHidden() == onlyVisible.value()) + continue; + no++; } - return no; } |
