From febcd88794ab2c4204e4c3785b9dea208b508bb5 Mon Sep 17 00:00:00 2001 From: outfoxxed Date: Thu, 10 Aug 2023 00:32:13 -0700 Subject: [PATCH] Fix crash when moving window to empty workspace Closes #16 --- flake.lock | 25 +++++++++++++------------ src/Hy3Layout.cpp | 5 +++-- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/flake.lock b/flake.lock index 1a69719..99cfb40 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1689799203, - "narHash": "sha256-N2/zV/HurGH83zQL7JKhRhfw02sdcZ8JIxH7wC2OVko=", + "lastModified": 1691612137, + "narHash": "sha256-7nMCJIZBB2XIjUqAjImoTaZBVIg/0REripGdNsClxlQ=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "7091d4e5979720ddb30f540b2d7da48080bf2487", + "rev": "126792584fa4eb25f6c8e3b3eb6bfb00b58a787a", "type": "github" }, "original": { @@ -44,11 +44,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1688500189, - "narHash": "sha256-djYYiY4lzJOlXOnTHytH6BUugrxHDZjuGxTSrU4gt4M=", + "lastModified": 1690179384, + "narHash": "sha256-+arbgqFTAtoeKtepW9wCnA0njCOyoiDFyl0Q0SBSOtE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "78419edadf0fabbe5618643bd850b2f2198ed060", + "rev": "b12803b6d90e2e583429bb79b859ca53c348b39a", "type": "github" }, "original": { @@ -67,17 +67,18 @@ "flake": false, "locked": { "host": "gitlab.freedesktop.org", - "lastModified": 1689611045, - "narHash": "sha256-3RTOlQabkNetQ4O4UzSf57JPco9VGVHhSU1ls5uKBeE=", + "lastModified": 1691073628, + "narHash": "sha256-LlxE3o3UzRY7APYVLGNKM30DBMcDifCRIQiMVSbYLIc=", "owner": "wlroots", "repo": "wlroots", - "rev": "7791ffe0584c4ac13c170e1661ce33bdbd4a9b9e", + "rev": "c74f89d4f84bfed0284d3908aee5d207698c70c5", "type": "gitlab" }, "original": { "host": "gitlab.freedesktop.org", "owner": "wlroots", "repo": "wlroots", + "rev": "c74f89d4f84bfed0284d3908aee5d207698c70c5", "type": "gitlab" } }, @@ -93,11 +94,11 @@ ] }, "locked": { - "lastModified": 1685385764, - "narHash": "sha256-r+XMyOoRXq+hlfjayb+fyi9kq2JK48TrwuNIAXqlj7U=", + "lastModified": 1691082525, + "narHash": "sha256-C5AO0KnyAFJaCkOn+5nJfWm0kyiPn/Awh0lKTjhgr7Y=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "4d9ff0c17716936e0b5ca577a39e263633901ed1", + "rev": "42747d267ab4345c4ceb78cd4a4fe99f072d80fc", "type": "github" }, "original": { diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp index 1c3ed1c..e18d031 100644 --- a/src/Hy3Layout.cpp +++ b/src/Hy3Layout.cpp @@ -1267,7 +1267,9 @@ Hy3Node* Hy3Layout::getNodeFromWindow(CWindow* window) { void Hy3Layout::applyNodeDataToWindow(Hy3Node* node, bool no_animation) { if (node->data.type != Hy3NodeType::Window) return; - CWindow* window = node->data.as_window; + auto* window = node->data.as_window; + auto root_node = this->getWorkspaceRootGroup(window->m_iWorkspaceID); + if (root_node == nullptr) return; CMonitor* monitor = nullptr; @@ -1309,7 +1311,6 @@ void Hy3Layout::applyNodeDataToWindow(Hy3Node* node, bool no_animation) { auto calcPos = window->m_vPosition + Vector2D(*border_size, *border_size); auto calcSize = window->m_vSize - Vector2D(2 * *border_size, 2 * *border_size); - auto root_node = this->getWorkspaceRootGroup(window->m_iWorkspaceID); auto only_node = root_node->data.as_group.children.size() == 1 && root_node->data.as_group.children.front()->data.type == Hy3NodeType::Window;