diff options
| author | outfoxxed <outfoxxed@outfoxxed.me> | 2023-09-12 14:37:08 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-12 22:37:08 +0100 |
| commit | b0d5e4008b96f2cdbb6f6c2449c790d921d1546b (patch) | |
| tree | 4ea707d3f72e379d52a37da2ccaf8a3044784c72 /src/layout/IHyprLayout.cpp | |
| parent | be19773aaa4507fe6246f318b3bb4b969d79dc97 (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.cpp | 12 |
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); } |
