4c79361db9c065886c163d1cf873889e1e641e44
- Author
- outfoxxed <outfoxxed@outfoxxed.me>
- Committer
- outfoxxed <outfoxxed@outfoxxed.me>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/flake.lock b/flake.lock
2index 956b1e0d1a2a81f9a365ab4a5b133b10f7a47f64..17a33e848044dd6247c66945e5f794178cfaa99d 100644
3--- a/flake.lock
4+++ b/flake.lock
5@@ -20,11 +20,11 @@
6 ]
7 },
8 "locked": {
9- "lastModified": 1727261104,
10- "narHash": "sha256-rxDI7WrxIRV9it9mDCHcLa7xQykf1JloXnoXr5xQ8zI=",
11+ "lastModified": 1729527199,
12+ "narHash": "sha256-D5/YksfRga8Akd04ZtIkuYSIOjXVrAzQIQBSeplokzU=",
13 "owner": "hyprwm",
14 "repo": "aquamarine",
15- "rev": "b82fdaff917582a9d568969e15e61b398c71e990",
16+ "rev": "8d732fa8aff8b12ef2b1e2f00fc8153e41312b72",
17 "type": "github"
18 },
19 "original": {
20@@ -33,6 +33,44 @@
21 "type": "github"
22 }
23 },
24+ "flake-compat": {
25+ "flake": false,
26+ "locked": {
27+ "lastModified": 1696426674,
28+ "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
29+ "owner": "edolstra",
30+ "repo": "flake-compat",
31+ "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
32+ "type": "github"
33+ },
34+ "original": {
35+ "owner": "edolstra",
36+ "repo": "flake-compat",
37+ "type": "github"
38+ }
39+ },
40+ "gitignore": {
41+ "inputs": {
42+ "nixpkgs": [
43+ "hyprland",
44+ "pre-commit-hooks",
45+ "nixpkgs"
46+ ]
47+ },
48+ "locked": {
49+ "lastModified": 1709087332,
50+ "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
51+ "owner": "hercules-ci",
52+ "repo": "gitignore.nix",
53+ "rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
54+ "type": "github"
55+ },
56+ "original": {
57+ "owner": "hercules-ci",
58+ "repo": "gitignore.nix",
59+ "type": "github"
60+ }
61+ },
62 "hyprcursor": {
63 "inputs": {
64 "hyprlang": [
65@@ -49,11 +87,11 @@
66 ]
67 },
68 "locked": {
69- "lastModified": 1727532803,
70- "narHash": "sha256-ZaZ7h7PY8mQc4vtGmVqWLAq9CAO02gHMyNR5yY8zDmM=",
71+ "lastModified": 1728669738,
72+ "narHash": "sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk=",
73 "owner": "hyprwm",
74 "repo": "hyprcursor",
75- "rev": "b98726e431d4d3ed58bd58bee1047cdb81cec69f",
76+ "rev": "0264e698149fcb857a66a53018157b41f8d97bb0",
77 "type": "github"
78 },
79 "original": {
80@@ -71,19 +109,20 @@
81 "hyprutils": "hyprutils",
82 "hyprwayland-scanner": "hyprwayland-scanner",
83 "nixpkgs": "nixpkgs",
84+ "pre-commit-hooks": "pre-commit-hooks",
85 "systems": "systems",
86 "xdph": "xdph"
87 },
88 "locked": {
89- "lastModified": 1728142617,
90- "narHash": "sha256-ramJ6G9bKYuZshtYRc0olhtN89bP9i4BDhhTU0E0cLc=",
91- "rev": "0ec6072a290051a03ab66cfb9bc616b2f5540e64",
92- "revCount": 5298,
93+ "lastModified": 1730054738,
94+ "narHash": "sha256-xU5DxVMZXFLcypIo6PvrLRI0+74kOrFTdEykDDEaEkQ=",
95+ "ref": "refs/heads/main",
96+ "rev": "5d4b54b01286c10d4b6bf402a772b5938b054ce6",
97+ "revCount": 5383,
98 "type": "git",
99 "url": "https://github.com/hyprwm/Hyprland"
100 },
101 "original": {
102- "rev": "0ec6072a290051a03ab66cfb9bc616b2f5540e64",
103 "type": "git",
104 "url": "https://github.com/hyprwm/Hyprland"
105diff --git a/flake.nix b/flake.nix
106index 3f76b53b4cc8af1351b83cdbaa02fac580d99519..6928b1d6843ec8906423b8f124e9baa3a48c3830 100644
107--- a/flake.nix
108+++ b/flake.nix
109@@ -1,6 +1,6 @@
110 {
111 inputs = {
112- hyprland.url = "git+https://github.com/hyprwm/Hyprland?rev=0ec6072a290051a03ab66cfb9bc616b2f5540e64";
113+ hyprland.url = "git+https://github.com/hyprwm/Hyprland";
114 };
115
116 outputs = { self, hyprland, ... }: let
117diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp
118index 43aeffbe6a29190d119e7901fbab568353b77741..2e3c2e81fd190f03ca1f2dfb3deb308f4fdbcce1 100644
119--- a/src/Hy3Layout.cpp
120+++ b/src/Hy3Layout.cpp
121@@ -98,7 +98,7 @@ void Hy3Layout::onWindowCreatedTiling(PHLWINDOW window, eDirection) {
122 "onWindowCreatedTiling called with window {:x} (floating: {}, monitor: {}, workspace: {})",
123 (uintptr_t) window.get(),
124 window->m_bIsFloating,
125- window->m_iMonitorID,
126+ window->monitorID(),
127 window->m_pWorkspace->m_iID
128 );
129
130@@ -149,7 +149,7 @@ void Hy3Layout::insertNode(Hy3Node& node) {
131 node.reparenting = true;
132 node.size_ratio = 1.0;
133
134- PHLMONITOR monitor = g_pCompositor->getMonitorFromID(node.workspace->m_iMonitorID);
135+ auto monitor = node.workspace->m_pMonitor.lock();
136
137 Hy3Node* opening_into;
138 Hy3Node* opening_after = nullptr;
139@@ -432,7 +432,7 @@ void Hy3Layout::resizeActiveWindow(const Vector2D& delta, eRectCorner corner, PH
140 if (node != nullptr) {
141 node = &node->getExpandActor();
142
143- auto monitor = g_pCompositor->getMonitorFromID(window->m_iMonitorID);
144+ auto monitor = window->m_pMonitor.lock();
145
146 const bool display_left =
147 STICKS(node->position.x, monitor->vecPosition.x + monitor->vecReservedTopLeft.x);
148@@ -517,7 +517,7 @@ void Hy3Layout::fullscreenRequestForWindow(
149 ) {
150 if (current_mode == target_mode || window->m_pWorkspace->m_bIsSpecialWorkspace) return;
151
152- const auto monitor = g_pCompositor->getMonitorFromID(window->m_iMonitorID);
153+ const auto monitor = window->m_pMonitor.lock();
154
155 window->updateDynamicRules();
156 window->updateWindowDecos();
157@@ -1035,7 +1035,7 @@ void changeNodeWorkspaceRecursive(Hy3Node& node, const PHLWORKSPACE& workspace)
158 auto window = node.data.as_window();
159 g_pHyprRenderer->damageWindow(window);
160 window->moveToWorkspace(workspace);
161- window->m_iMonitorID = workspace->m_iMonitorID;
162+ window->m_pMonitor = workspace->m_pMonitor;
163 window->updateToplevel();
164 window->updateDynamicRules();
165 window->uncacheWindowDecos();
166@@ -1071,7 +1071,7 @@ void Hy3Layout::moveNodeToWorkspace(const PHLWORKSPACE& origin, std::string wsna
167 if (workspace == nullptr) {
168 hy3_log(LOG, "creating target workspace {} for node move", target.id);
169
170- workspace = g_pCompositor->createNewWorkspace(target.id, origin_ws->m_iMonitorID, target.name);
171+ workspace = g_pCompositor->createNewWorkspace(target.id, origin_ws->monitorID(), target.name);
172 }
173
174 // floating or fullscreen
175@@ -1103,12 +1103,12 @@ void Hy3Layout::moveNodeToWorkspace(const PHLWORKSPACE& origin, std::string wsna
176 }
177
178 if (follow) {
179- PHLMONITOR monitor = g_pCompositor->getMonitorFromID(workspace->m_iMonitorID);
180+ auto monitor = workspace->m_pMonitor.lock();
181
182 if (workspace->m_bIsSpecialWorkspace) {
183 monitor->setSpecialWorkspace(workspace);
184 } else if (origin_ws->m_bIsSpecialWorkspace) {
185- g_pCompositor->getMonitorFromID(origin_ws->m_iMonitorID)->setSpecialWorkspace(nullptr);
186+ origin_ws->m_pMonitor->setSpecialWorkspace(nullptr);
187 }
188
189 monitor->changeWorkspace(workspace);
190@@ -1535,7 +1535,7 @@ void Hy3Layout::renderHook(void*, SCallbackInfo&, std::any data) {
191
192 for (auto& entry: g_Hy3Layout->tab_groups) {
193 if (!entry.hidden
194- && entry.target_window->m_iMonitorID == g_pHyprOpenGL->m_RenderData.pMonitor->ID
195+ && entry.target_window->m_pMonitor == g_pHyprOpenGL->m_RenderData.pMonitor
196 && (!entry.target_window->m_pWorkspace || entry.target_window->m_pWorkspace->m_bVisible)
197 && std::find(rendered_groups.begin(), rendered_groups.end(), &entry)
198 == rendered_groups.end())
199@@ -1590,7 +1590,7 @@ void Hy3Layout::applyNodeDataToWindow(Hy3Node* node, bool no_animation) {
200 auto window = node->data.as_window();
201 auto root_node = this->getWorkspaceRootGroup(window->m_pWorkspace);
202
203- auto monitor = g_pCompositor->getMonitorFromID(node->workspace->m_iMonitorID);
204+ auto monitor = node->workspace->m_pMonitor.lock();
205
206 if (monitor == nullptr) {
207 hy3_log(
208diff --git a/src/Hy3Node.cpp b/src/Hy3Node.cpp
209index b9aa7bd5d3b3711307aef80f33e2a1a05bb7a965..1766e93a439d376e8dec67507ec84d290169bd0d 100644
210--- a/src/Hy3Node.cpp
211+++ b/src/Hy3Node.cpp
212@@ -322,7 +322,7 @@ void Hy3Node::recalcSizePosRecursive(bool no_animation) {
213
214 if (this->data.is_window() && this->data.as_window()->isFullscreen()) {
215 auto window = this->data.as_window();
216- PHLMONITOR monitor = g_pCompositor->getMonitorFromID(this->workspace->m_iMonitorID);
217+ auto monitor = this->workspace->m_pMonitor.lock();
218
219 if (window->isEffectiveInternalFSMode(FSMODE_FULLSCREEN)) {
220 window->m_vRealPosition = monitor->vecPosition;