summaryrefslogtreecommitdiff
path: root/src/Compositor.cpp
diff options
context:
space:
mode:
authorzakk4223 <zakk@rsdio.com>2024-04-18 21:44:51 -0400
committerGitHub <noreply@github.com>2024-04-19 02:44:51 +0100
commit4d0a63523751a590a521fd873f770825023069ae (patch)
tree3777908a5f7414895ad7963695423289340587fb /src/Compositor.cpp
parent82222342f10a7eff0ec9be972153e740d0f95213 (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.cpp25
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;
}