dispatchers: Add an option to prioritize focus change within groups with movefocus (#8601)
* modified movefocus dispatcher to prioritize focus change within groups * pass clang-format check * `movefocus` cycling groups set optional to config bool `movefocus_cycles_groupfirst` * Update ConfigDescriptions.hpp
This commit is contained in:
parent
61a51bb4ef
commit
452a7e6905
3 changed files with 23 additions and 0 deletions
|
|
@ -1374,6 +1374,7 @@ SDispatchResult CKeybindManager::moveActiveToWorkspaceSilent(std::string args) {
|
|||
SDispatchResult CKeybindManager::moveFocusTo(std::string args) {
|
||||
static auto PFULLCYCLE = CConfigValue<Hyprlang::INT>("binds:movefocus_cycles_fullscreen");
|
||||
static auto PMONITORFALLBACK = CConfigValue<Hyprlang::INT>("binds:window_direction_monitor_fallback");
|
||||
static auto PGROUPCYCLE = CConfigValue<Hyprlang::INT>("binds:movefocus_cycles_groupfirst");
|
||||
char arg = args[0];
|
||||
|
||||
if (!isDirection(args)) {
|
||||
|
|
@ -1393,6 +1394,21 @@ SDispatchResult CKeybindManager::moveFocusTo(std::string args) {
|
|||
(arg == 'd' || arg == 'b' || arg == 'r' ? g_pCompositor->getNextWindowOnWorkspace(PLASTWINDOW, true) : g_pCompositor->getPrevWindowOnWorkspace(PLASTWINDOW, true)) :
|
||||
g_pCompositor->getWindowInDirection(PLASTWINDOW, arg);
|
||||
|
||||
// Prioritize focus change within groups if the window is a part of it.
|
||||
if (*PGROUPCYCLE) {
|
||||
if (!PLASTWINDOW->m_sGroupData.pNextWindow.expired()) {
|
||||
if (arg == 'l' && PLASTWINDOW != PLASTWINDOW->getGroupHead()) {
|
||||
PLASTWINDOW->setGroupCurrent(PLASTWINDOW->getGroupPrevious());
|
||||
return {};
|
||||
}
|
||||
|
||||
else if (arg == 'r' && PLASTWINDOW != PLASTWINDOW->getGroupTail()) {
|
||||
PLASTWINDOW->setGroupCurrent(PLASTWINDOW->m_sGroupData.pNextWindow.lock());
|
||||
return {};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Found window in direction, switch to it
|
||||
if (PWINDOWTOCHANGETO) {
|
||||
switchToWindow(PWINDOWTOCHANGETO);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue