From 5a80bc120ab7c260e3084c3284a0411ca513c62c Mon Sep 17 00:00:00 2001 From: Vaxry Date: Tue, 24 Feb 2026 11:33:21 +0000 Subject: [PATCH] algo/scrolling: fix crashes on destroying ws ref #13324 --- .../algorithm/tiled/scrolling/ScrollingAlgorithm.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp index 5b696113..247795ed 100644 --- a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp +++ b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp @@ -415,7 +415,7 @@ SP SScrollingData::atCenter() { } void SScrollingData::recalculate(bool forceInstant) { - if (algorithm->m_parent->space()->workspace()->m_hasFullscreenWindow) + if (!algorithm->m_parent->space()->workspace() || algorithm->m_parent->space()->workspace()->m_hasFullscreenWindow) return; static const auto PFSONONE = CConfigValue("scrolling:fullscreen_on_one_column"); @@ -1404,6 +1404,11 @@ eScrollDirection CScrollingAlgorithm::getDynamicDirection() { CBox CScrollingAlgorithm::usableArea() { CBox box = m_parent->space()->workArea(); + + // doesn't matter, this happens when this algo is about to be destroyed + if (!m_parent->space()->workspace()) + return box; + box.translate(-m_parent->space()->workspace()->m_monitor->m_position); return box; }