Hyprscrolling: Respect general:no_focus_fallback config when using layoutmsg focus (#443)

* Respect general:no_focus_fallback config when using layoutmsg focus

* Remove braces from short ifs
This commit is contained in:
James Satterfield 2025-08-06 16:58:46 -05:00 committed by GitHub
parent bdd56d2c56
commit c8dc6f3d54
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1044,7 +1044,8 @@ std::any CScrollingLayout::layoutMessage(SLayoutMessageHeader header, std::strin
WDATA->recalculate();
}
} else if (ARGS[0] == "focus") {
const auto WDATA = dataFor(g_pCompositor->m_lastWindow.lock());
const auto WDATA = dataFor(g_pCompositor->m_lastWindow.lock());
static const auto PNOFALLBACK = CConfigValue<Hyprlang::INT>("general:no_focus_fallback");
if (!WDATA || ARGS[1].empty())
return {};
@ -1053,8 +1054,12 @@ std::any CScrollingLayout::layoutMessage(SLayoutMessageHeader header, std::strin
case 'u':
case 't': {
auto PREV = WDATA->column->prev(WDATA);
if (!PREV)
PREV = WDATA->column->windowDatas.back();
if (!PREV) {
if (*PNOFALLBACK)
break;
else
PREV = WDATA->column->windowDatas.back();
}
g_pCompositor->focusWindow(PREV->window.lock());
break;
@ -1063,8 +1068,12 @@ std::any CScrollingLayout::layoutMessage(SLayoutMessageHeader header, std::strin
case 'b':
case 'd': {
auto NEXT = WDATA->column->next(WDATA);
if (!NEXT)
NEXT = WDATA->column->windowDatas.front();
if (!NEXT) {
if (*PNOFALLBACK)
break;
else
NEXT = WDATA->column->windowDatas.front();
}
g_pCompositor->focusWindow(NEXT->window.lock());
break;
@ -1072,8 +1081,12 @@ std::any CScrollingLayout::layoutMessage(SLayoutMessageHeader header, std::strin
case 'l': {
auto PREV = WDATA->column->workspace->prev(WDATA->column.lock());
if (!PREV)
PREV = WDATA->column->workspace->columns.back();
if (!PREV) {
if (*PNOFALLBACK)
break;
else
PREV = WDATA->column->workspace->columns.back();
}
g_pCompositor->focusWindow(PREV->windowDatas.front()->window.lock());
centerOrFit(WDATA->column->workspace.lock(), PREV);
@ -1083,8 +1096,12 @@ std::any CScrollingLayout::layoutMessage(SLayoutMessageHeader header, std::strin
case 'r': {
auto NEXT = WDATA->column->workspace->next(WDATA->column.lock());
if (!NEXT)
NEXT = WDATA->column->workspace->columns.front();
if (!NEXT) {
if (*PNOFALLBACK)
break;
else
NEXT = WDATA->column->workspace->columns.front();
}
g_pCompositor->focusWindow(NEXT->windowDatas.front()->window.lock());
centerOrFit(WDATA->column->workspace.lock(), NEXT);