From f4081531bdc8c9f5a38261867b7107c746db7eee Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Sat, 4 Nov 2023 03:08:54 -0700 Subject: [PATCH] Recalculate root node when recalculateMonitor is called Fixes bars being overlaid on windows and mismatched fullscreen sizes. --- src/Hy3Layout.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp index 9c9c717..f15f998 100644 --- a/src/Hy3Layout.cpp +++ b/src/Hy3Layout.cpp @@ -323,18 +323,25 @@ void Hy3Layout::recalculateMonitor(const int& monitor_id) { g_pHyprRenderer->damageMonitor(monitor); - const auto workspace = g_pCompositor->getWorkspaceByID(monitor->activeWorkspace); - if (workspace == nullptr) return; + // todo: refactor this - if (monitor->specialWorkspaceID) { - const auto top_node = this->getWorkspaceRootGroup(monitor->specialWorkspaceID); + auto* top_node = this->getWorkspaceRootGroup(monitor->activeWorkspace); + if (top_node != nullptr) { + top_node->position = monitor->vecPosition + monitor->vecReservedTopLeft; + top_node->size = + monitor->vecSize - monitor->vecReservedTopLeft - monitor->vecReservedBottomRight; - if (top_node != nullptr) { - top_node->position = monitor->vecPosition + monitor->vecReservedTopLeft; - top_node->size = - monitor->vecSize - monitor->vecReservedTopLeft - monitor->vecReservedBottomRight; - top_node->recalcSizePosRecursive(); - } + top_node->recalcSizePosRecursive(); + } + + top_node = this->getWorkspaceRootGroup(monitor->specialWorkspaceID); + + if (top_node != nullptr) { + top_node->position = monitor->vecPosition + monitor->vecReservedTopLeft; + top_node->size = + monitor->vecSize - monitor->vecReservedTopLeft - monitor->vecReservedBottomRight; + + top_node->recalcSizePosRecursive(); } }