summaryrefslogtreecommitdiff
path: root/src/layout/IHyprLayout.cpp
diff options
context:
space:
mode:
authoroutfoxxed <outfoxxed@outfoxxed.me>2023-09-12 14:37:08 -0700
committerGitHub <noreply@github.com>2023-09-12 22:37:08 +0100
commitb0d5e4008b96f2cdbb6f6c2449c790d921d1546b (patch)
tree4ea707d3f72e379d52a37da2ccaf8a3044784c72 /src/layout/IHyprLayout.cpp
parentbe19773aaa4507fe6246f318b3bb4b969d79dc97 (diff)
layout: Allow the layout to control how windows are raised in groups (#3275)
* Allow the layout to control how windows are raised in groups Previously windows could only be focused if they weren't hidden or were part of a group. This shifts the logic for picking the window out of a group to the layout allowing for alternate group implementations to function normally. * Fix doc comment consistency * Fix tabs in comments
Diffstat (limited to 'src/layout/IHyprLayout.cpp')
-rw-r--r--src/layout/IHyprLayout.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/layout/IHyprLayout.cpp b/src/layout/IHyprLayout.cpp
index b0c1d50c..5466282f 100644
--- a/src/layout/IHyprLayout.cpp
+++ b/src/layout/IHyprLayout.cpp
@@ -535,12 +535,22 @@ CWindow* IHyprLayout::getNextWindowCandidate(CWindow* pWindow) {
return PWINDOWCANDIDATE;
}
-void IHyprLayout::requestFocusForWindow(CWindow* pWindow) {
+bool IHyprLayout::isWindowReachable(CWindow* pWindow) {
+ return pWindow && (!pWindow->isHidden() || pWindow->m_sGroupData.pNextWindow);
+}
+
+void IHyprLayout::bringWindowToTop(CWindow* pWindow) {
+ if (pWindow == nullptr)
+ return;
+
if (pWindow->isHidden() && pWindow->m_sGroupData.pNextWindow) {
// grouped, change the current to this window
pWindow->setGroupCurrent(pWindow);
}
+}
+void IHyprLayout::requestFocusForWindow(CWindow* pWindow) {
+ bringWindowToTop(pWindow);
g_pCompositor->focusWindow(pWindow);
}