From d67c4e2b7f1e381b24becbb45b8e8471fcdda163 Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Sun, 12 Apr 2026 18:04:56 +0100 Subject: layout/algo: preserve focused target if applicable on layout switches (#14058) fixes #13804 --- hyprtester/src/tests/main/layout.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'hyprtester/src/tests/main/layout.cpp') diff --git a/hyprtester/src/tests/main/layout.cpp b/hyprtester/src/tests/main/layout.cpp index 5be29a6f..208bee30 100644 --- a/hyprtester/src/tests/main/layout.cpp +++ b/hyprtester/src/tests/main/layout.cpp @@ -140,6 +140,31 @@ static bool testFocusMRUAfterClose() { return true; } +static bool testFocusPreservedLayoutChange() { + NLog::log("{}Testing focus is preserved on layout change", Colors::GREEN); + + OK(getFromSocket("/keyword general:layout master")); + + EXPECT(!!Tests::spawnKitty("kitty_A"), true); + EXPECT(!!Tests::spawnKitty("kitty_B"), true); + EXPECT(!!Tests::spawnKitty("kitty_C"), true); + EXPECT(!!Tests::spawnKitty("kitty_D"), true); + + OK(getFromSocket("/dispatch focuswindow class:kitty_C")); + + OK(getFromSocket("/keyword general:layout monocle")); + + { + auto str = getFromSocket("/activewindow"); + EXPECT(str.contains("class: kitty_C"), true); + } + + NLog::log("{}Killing all windows", Colors::YELLOW); + Tests::killAllWindows(); + EXPECT(Tests::windowCount(), 0); + return true; +} + static bool test() { NLog::log("{}Testing layout generic", Colors::GREEN); @@ -153,6 +178,7 @@ static bool test() { testCrashOnGeomUpdate(); testPosPreserve(); testFocusMRUAfterClose(); + testFocusPreservedLayoutChange(); // clean up NLog::log("Cleaning up", Colors::YELLOW); -- cgit v1.2.3