mirror of
https://github.com/hyprwm/Hyprland
synced 2024-12-23 13:09:50 +01:00
binds: cycle within group on single monitor if no window found in the argument direction. (#8714)
This commit is contained in:
parent
c7d9719910
commit
bd7092a9fe
1 changed files with 9 additions and 10 deletions
|
@ -1395,19 +1395,18 @@ SDispatchResult CKeybindManager::moveFocusTo(std::string args) {
|
||||||
g_pCompositor->getWindowInDirection(PLASTWINDOW, arg);
|
g_pCompositor->getWindowInDirection(PLASTWINDOW, arg);
|
||||||
|
|
||||||
// Prioritize focus change within groups if the window is a part of it.
|
// Prioritize focus change within groups if the window is a part of it.
|
||||||
if (*PGROUPCYCLE) {
|
if (*PGROUPCYCLE && PLASTWINDOW->m_sGroupData.pNextWindow) {
|
||||||
if (!PLASTWINDOW->m_sGroupData.pNextWindow.expired()) {
|
auto isTheOnlyGroupOnWs = !PWINDOWTOCHANGETO && g_pCompositor->m_vMonitors.size() == 1;
|
||||||
if (arg == 'l' && PLASTWINDOW != PLASTWINDOW->getGroupHead()) {
|
if (arg == 'l' && (PLASTWINDOW != PLASTWINDOW->getGroupHead() || isTheOnlyGroupOnWs)) {
|
||||||
PLASTWINDOW->setGroupCurrent(PLASTWINDOW->getGroupPrevious());
|
PLASTWINDOW->setGroupCurrent(PLASTWINDOW->getGroupPrevious());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (arg == 'r' && PLASTWINDOW != PLASTWINDOW->getGroupTail()) {
|
else if (arg == 'r' && (PLASTWINDOW != PLASTWINDOW->getGroupTail() || isTheOnlyGroupOnWs)) {
|
||||||
PLASTWINDOW->setGroupCurrent(PLASTWINDOW->m_sGroupData.pNextWindow.lock());
|
PLASTWINDOW->setGroupCurrent(PLASTWINDOW->m_sGroupData.pNextWindow.lock());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Found window in direction, switch to it
|
// Found window in direction, switch to it
|
||||||
if (PWINDOWTOCHANGETO) {
|
if (PWINDOWTOCHANGETO) {
|
||||||
|
|
Loading…
Reference in a new issue