diff --git a/src/layout/LayoutManager.cpp b/src/layout/LayoutManager.cpp index 19833ba3b..9b5618e3a 100644 --- a/src/layout/LayoutManager.cpp +++ b/src/layout/LayoutManager.cpp @@ -335,10 +335,10 @@ void CLayoutManager::performSnap(Vector2D& sourcePos, Vector2D& sourceSize, SP reason) { if (m->m_activeSpecialWorkspace) - m->m_activeSpecialWorkspace->m_space->recalculate(recalcMonitorReasontoRecalcReason(reason)); + m->m_activeSpecialWorkspace->m_space->recalculate(reason.has_value() ? recalcMonitorReasontoRecalcReason(reason.value()) : std::nullopt); if (m->m_activeWorkspace) - m->m_activeWorkspace->m_space->recalculate(recalcMonitorReasontoRecalcReason(reason)); + m->m_activeWorkspace->m_space->recalculate(reason.has_value() ? recalcMonitorReasontoRecalcReason(reason.value()) : std::nullopt); } void CLayoutManager::invalidateMonitorGeometries(PHLMONITOR m) { diff --git a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp index d4e717e69..b50084f21 100644 --- a/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp +++ b/src/layout/algorithm/tiled/scrolling/ScrollingAlgorithm.cpp @@ -811,7 +811,7 @@ void CScrollingAlgorithm::recalculate(std::optional reason) // guard against unwanted scrolling viewport moves // (e.g. changing workspace to a scrolling layout workspace fits the focused window in that workspace into view) - if (Layout::isHardRecalculateReason(reason.value())) + if ( !reason.has_value() || Layout::isHardRecalculateReason(reason.value())) focusOnInput(Desktop::focusState()->window()->layoutTarget(), INPUT_MODE_HARD); } } diff --git a/src/layout/space/Space.cpp b/src/layout/space/Space.cpp index f7c593f06..0182d96d2 100644 --- a/src/layout/space/Space.cpp +++ b/src/layout/space/Space.cpp @@ -211,11 +211,9 @@ const std::vector>& CSpace::targets() const { return m_targets; } -std::optional Layout::recalcMonitorReasontoRecalcReason(std::optional reason) { - if (!reason) - return std::nullopt; - - switch (reason.value()) { +std::optional Layout::recalcMonitorReasontoRecalcReason(CLayoutManager::eRecalculateMonitorReason reason) { +// If eRecalculateMonitorReason doesn't have a eRecalculateReason pair, it'll return nullopt + switch (reason) { case CLayoutManager::RECALCULATE_MONITOR_REASON_TOGGLE_SPECIAL_WORKSPACE: return RECALCULATE_REASON_SPECIAL_WORKSPACE_TOGGLE; case CLayoutManager::RECALCULATE_MONITOR_REASON_WORKSPACE_CHANGE: return RECALCULATE_REASON_WORKSPACE_CHANGE; case CLayoutManager::RECALCULATE_MONITOR_REASON_HYPRCTL_KEYWORD: return RECALCULATE_REASON_HYPRCTL_KEYWORD; diff --git a/src/layout/space/Space.hpp b/src/layout/space/Space.hpp index 5620e100b..889b611c8 100644 --- a/src/layout/space/Space.hpp +++ b/src/layout/space/Space.hpp @@ -22,7 +22,7 @@ namespace Layout { RECALCULATE_REASON_RENDER_MOINTOR, }; - std::optional recalcMonitorReasontoRecalcReason(std::optional reason); + std::optional recalcMonitorReasontoRecalcReason(CLayoutManager::eRecalculateMonitorReason reason); class ITarget; class CAlgorithm;