summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hyprtester/src/tests/main/layout.cpp54
-rw-r--r--src/layout/algorithm/Algorithm.cpp4
2 files changed, 56 insertions, 2 deletions
diff --git a/hyprtester/src/tests/main/layout.cpp b/hyprtester/src/tests/main/layout.cpp
new file mode 100644
index 00000000..c0587f25
--- /dev/null
+++ b/hyprtester/src/tests/main/layout.cpp
@@ -0,0 +1,54 @@
+#include "../shared.hpp"
+#include "../../shared.hpp"
+#include "../../hyprctlCompat.hpp"
+#include "tests.hpp"
+
+static int ret = 0;
+
+static void swar() {
+ OK(getFromSocket("/keyword layout:single_window_aspect_ratio 1 1"));
+
+ Tests::spawnKitty();
+
+ {
+ auto str = getFromSocket("/activewindow");
+ EXPECT_CONTAINS(str, "at: 442,22");
+ EXPECT_CONTAINS(str, "size: 1036,1036");
+ }
+
+ Tests::spawnKitty();
+
+ OK(getFromSocket("/dispatch killwindow activewindow"));
+
+ Tests::waitUntilWindowsN(1);
+
+ {
+ auto str = getFromSocket("/activewindow");
+ EXPECT_CONTAINS(str, "at: 442,22");
+ EXPECT_CONTAINS(str, "size: 1036,1036");
+ }
+
+ // clean up
+ NLog::log("{}Killing all windows", Colors::YELLOW);
+ Tests::killAllWindows();
+}
+
+static bool test() {
+ NLog::log("{}Testing layout generic", Colors::GREEN);
+
+ // setup
+ OK(getFromSocket("/dispatch workspace 10"));
+
+ // test
+ NLog::log("{}Testing `single_window_aspect_ratio`", Colors::GREEN);
+ swar();
+
+ // clean up
+ NLog::log("Cleaning up", Colors::YELLOW);
+ OK(getFromSocket("/dispatch workspace 1"));
+ OK(getFromSocket("/reload"));
+
+ return !ret;
+}
+
+REGISTER_TEST_FN(test);
diff --git a/src/layout/algorithm/Algorithm.cpp b/src/layout/algorithm/Algorithm.cpp
index cd8cfac4..a5f7ffcc 100644
--- a/src/layout/algorithm/Algorithm.cpp
+++ b/src/layout/algorithm/Algorithm.cpp
@@ -42,16 +42,16 @@ void CAlgorithm::removeTarget(SP<ITarget> target) {
const bool IS_FLOATING = std::ranges::contains(m_floatingTargets, target);
if (IS_FLOATING) {
- m_floating->removeTarget(target);
std::erase(m_floatingTargets, target);
+ m_floating->removeTarget(target);
return;
}
const bool IS_TILED = std::ranges::contains(m_tiledTargets, target);
if (IS_TILED) {
- m_tiled->removeTarget(target);
std::erase(m_tiledTargets, target);
+ m_tiled->removeTarget(target);
return;
}