d3014c9f921a4e671046c3081e5da8b5889fb8c0

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

Message

Add some missing functions

Diff

 1diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp
 2index ced8dbdf2debc23156601eae2d5aaf885c995305..c250424054279ad55a3dcca613dbcbbdc5d6a0b9 100644
 3--- a/src/Hy3Layout.cpp
 4+++ b/src/Hy3Layout.cpp
 5@@ -557,14 +557,15 @@ bool Hy3Layout::isWindowTiled(CWindow* window) {
 6 }
 7 
 8 void Hy3Layout::recalculateMonitor(const int& monitor_id) {
 9+	Debug::log(LOG, "Recalculate monitor %d", monitor_id);
10 	const auto monitor = g_pCompositor->getMonitorFromID(monitor_id);
11 	if (monitor == nullptr) return;
12 
13+	g_pHyprRenderer->damageMonitor(monitor);
14+
15 	const auto workspace = g_pCompositor->getWorkspaceByID(monitor->activeWorkspace);
16 	if (workspace == nullptr) return;
17 
18-	g_pHyprRenderer->damageMonitor(monitor);
19-
20 	if (monitor->specialWorkspaceID) {
21 		const auto top_node = this->getWorkspaceRootGroup(monitor->specialWorkspaceID);
22 
23@@ -594,9 +595,9 @@ void Hy3Layout::recalculateMonitor(const int& monitor_id) {
24 			this->applyNodeDataToWindow(&fakeNode);
25 		}
26 	} else {
27-		const auto top_node = this->getWorkspaceRootGroup(monitor->specialWorkspaceID);
28+		const auto top_node = this->getWorkspaceRootGroup(monitor->activeWorkspace);
29 
30-		if (top_node) {
31+		if (top_node != nullptr) {
32 			top_node->position = monitor->vecPosition + monitor->vecReservedTopLeft;
33 			top_node->size = monitor->vecSize - monitor->vecReservedTopLeft - monitor->vecReservedBottomRight;
34 			top_node->recalcSizePosRecursive();
35@@ -604,8 +605,10 @@ void Hy3Layout::recalculateMonitor(const int& monitor_id) {
36 	}
37 }
38 
39-void Hy3Layout::recalculateWindow(CWindow* pWindow) {
40-    ; // empty
41+void Hy3Layout::recalculateWindow(CWindow* window) {
42+	auto* node = this->getNodeFromWindow(window);
43+	if (node == nullptr) return;
44+	node->recalcSizePosRecursive();
45 }
46 
47 void Hy3Layout::onBeginDragWindow() {
48@@ -873,18 +876,16 @@ std::any Hy3Layout::layoutMessage(SLayoutMessageHeader header, std::string conte
49 	return "";
50 }
51 
52-SWindowRenderLayoutHints Hy3Layout::requestRenderHints(CWindow* pWindow) {
53-    return {};
54+SWindowRenderLayoutHints Hy3Layout::requestRenderHints(CWindow* window) {
55+	return {};
56 }
57 
58 void Hy3Layout::switchWindows(CWindow* pWindowA, CWindow* pWindowB) {
59-	Debug::log(LOG, "SwitchWindows: %p %p", pWindowA, pWindowB);
60-    ; // empty
61+	// todo
62 }
63 
64 void Hy3Layout::alterSplitRatio(CWindow* pWindow, float delta, bool exact) {
65-	Debug::log(LOG, "AlterSplitRatio: %p %f", pWindow, delta);
66-    ; // empty
67+	// todo
68 }
69 
70 std::string Hy3Layout::getLayoutName() {
71@@ -892,7 +893,11 @@ std::string Hy3Layout::getLayoutName() {
72 }
73 
74 void Hy3Layout::replaceWindowDataWith(CWindow* from, CWindow* to) {
75-    ; // empty
76+	auto* node = this->getNodeFromWindow(from);
77+	if (node == nullptr) return;
78+
79+	node->data.as_window = to;
80+	this->applyNodeDataToWindow(node);
81 }
82 
83 void Hy3Layout::onEnable() {