diff --git a/hyprscrolling/Scrolling.cpp b/hyprscrolling/Scrolling.cpp index 187885a..7e00087 100644 --- a/hyprscrolling/Scrolling.cpp +++ b/hyprscrolling/Scrolling.cpp @@ -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("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);