f4081531bdc8c9f5a38261867b7107c746db7eee

Author
outfoxxed <outfoxxed@outfoxxed.me>
Committer
outfoxxed <outfoxxed@outfoxxed.me>
Date

Message

Recalculate root node when recalculateMonitor is called

Fixes bars being overlaid on windows and mismatched fullscreen sizes.

Diff

 1diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp
 2index 9c9c717062ce7a9461ec9e52ecb9ba35e8432953..f15f99879f14776337d963b09640a0afebba8cd8 100644
 3--- a/src/Hy3Layout.cpp
 4+++ b/src/Hy3Layout.cpp
 5@@ -323,18 +323,25 @@ void Hy3Layout::recalculateMonitor(const int& monitor_id) {
 6 
 7 	g_pHyprRenderer->damageMonitor(monitor);
 8 
 9-	const auto workspace = g_pCompositor->getWorkspaceByID(monitor->activeWorkspace);
10-	if (workspace == nullptr) return;
11+	// todo: refactor this
12 
13-	if (monitor->specialWorkspaceID) {
14-		const auto top_node = this->getWorkspaceRootGroup(monitor->specialWorkspaceID);
15+	auto* top_node = this->getWorkspaceRootGroup(monitor->activeWorkspace);
16+	if (top_node != nullptr) {
17+		top_node->position = monitor->vecPosition + monitor->vecReservedTopLeft;
18+		top_node->size =
19+		    monitor->vecSize - monitor->vecReservedTopLeft - monitor->vecReservedBottomRight;
20 
21-		if (top_node != nullptr) {
22-			top_node->position = monitor->vecPosition + monitor->vecReservedTopLeft;
23-			top_node->size =
24-			    monitor->vecSize - monitor->vecReservedTopLeft - monitor->vecReservedBottomRight;
25-			top_node->recalcSizePosRecursive();
26-		}
27+		top_node->recalcSizePosRecursive();
28+	}
29+
30+	top_node = this->getWorkspaceRootGroup(monitor->specialWorkspaceID);
31+
32+	if (top_node != nullptr) {
33+		top_node->position = monitor->vecPosition + monitor->vecReservedTopLeft;
34+		top_node->size =
35+		    monitor->vecSize - monitor->vecReservedTopLeft - monitor->vecReservedBottomRight;
36+
37+		top_node->recalcSizePosRecursive();
38 	}
39 }
40