summaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2026-02-28 23:06:27 +0000
committerGitHub <noreply@github.com>2026-02-28 23:06:27 +0000
commit2928d6af0ad1fa9f950c4ea8394739a468b5e34f (patch)
treef9c61ab220adadfebf5bb771da620b71abbaaea0 /src/layout
parent93aacfc0dcf4a575d7295728b729d3aafa088481 (diff)
layouts: fix crash on missed relayout updates (#13444)
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/LayoutManager.cpp8
-rw-r--r--src/layout/space/Space.cpp7
-rw-r--r--src/layout/space/Space.hpp3
3 files changed, 11 insertions, 7 deletions
diff --git a/src/layout/LayoutManager.cpp b/src/layout/LayoutManager.cpp
index bcbf8438..56fa508d 100644
--- a/src/layout/LayoutManager.cpp
+++ b/src/layout/LayoutManager.cpp
@@ -11,13 +11,7 @@
using namespace Layout;
-CLayoutManager::CLayoutManager() {
- static auto P = Event::bus()->m_events.monitor.layoutChanged.listen([] {
- for (const auto& ws : g_pCompositor->getWorkspaces()) {
- ws->m_space->recheckWorkArea();
- }
- });
-}
+CLayoutManager::CLayoutManager() = default;
void CLayoutManager::newTarget(SP<ITarget> target, SP<CSpace> space) {
// on a new target: remember desired pos for float, if available
diff --git a/src/layout/space/Space.cpp b/src/layout/space/Space.cpp
index 742c398a..33e5bb8c 100644
--- a/src/layout/space/Space.cpp
+++ b/src/layout/space/Space.cpp
@@ -6,6 +6,7 @@
#include "../../debug/log/Logger.hpp"
#include "../../desktop/Workspace.hpp"
#include "../../config/ConfigManager.hpp"
+#include "../../event/EventBus.hpp"
using namespace Layout;
@@ -17,6 +18,12 @@ SP<CSpace> CSpace::create(PHLWORKSPACE w) {
CSpace::CSpace(PHLWORKSPACE parent) : m_parent(parent) {
recheckWorkArea();
+
+ // NOLINTNEXTLINE
+ m_geomUpdateCallback = Event::bus()->m_events.monitor.layoutChanged.listen([this] {
+ recheckWorkArea();
+ m_algorithm->recalculate();
+ });
}
void CSpace::add(SP<ITarget> t) {
diff --git a/src/layout/space/Space.hpp b/src/layout/space/Space.hpp
index 4229e99d..ff3d18e6 100644
--- a/src/layout/space/Space.hpp
+++ b/src/layout/space/Space.hpp
@@ -63,5 +63,8 @@ namespace Layout {
// work area is in global coords
CBox m_workArea, m_floatingWorkArea;
+
+ // for recalc
+ CHyprSignalListener m_geomUpdateCallback;
};
}; \ No newline at end of file