diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2024-04-27 12:43:12 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-27 12:43:12 +0100 |
| commit | bca7804bb6e1bf5ce5a99b9ae4806be25e36993c (patch) | |
| tree | ebd3a578de1dfe11b54f9440cfc3a408ffa6a620 /src/layout/DwindleLayout.hpp | |
| parent | 25aec3ac8ce65ed224f025f8f6dfef73780577a4 (diff) | |
internal: Window storage rework - part 1 (#5762)
* Window storage rework - part 1
* format
* remove useless include
* fix pch
* format
* fix crash in dwindle
* fix vram leak
* prefer .expired() for bool checks
Diffstat (limited to 'src/layout/DwindleLayout.hpp')
| -rw-r--r-- | src/layout/DwindleLayout.hpp | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/layout/DwindleLayout.hpp b/src/layout/DwindleLayout.hpp index 11b927d1..13834bc7 100644 --- a/src/layout/DwindleLayout.hpp +++ b/src/layout/DwindleLayout.hpp @@ -16,7 +16,7 @@ struct SDwindleNodeData { SDwindleNodeData* pParent = nullptr; bool isNode = false; - CWindow* pWindow = nullptr; + PHLWINDOWREF pWindow; std::array<SDwindleNodeData*, 2> children = {nullptr, nullptr}; @@ -34,7 +34,7 @@ struct SDwindleNodeData { // For list lookup bool operator==(const SDwindleNodeData& rhs) const { - return pWindow == rhs.pWindow && workspaceID == rhs.workspaceID && box == rhs.box && pParent == rhs.pParent && children[0] == rhs.children[0] && + return pWindow.lock() == rhs.pWindow.lock() && workspaceID == rhs.workspaceID && box == rhs.box && pParent == rhs.pParent && children[0] == rhs.children[0] && children[1] == rhs.children[1]; } @@ -45,21 +45,21 @@ struct SDwindleNodeData { class CHyprDwindleLayout : public IHyprLayout { public: - virtual void onWindowCreatedTiling(CWindow*, eDirection direction = DIRECTION_DEFAULT); - virtual void onWindowRemovedTiling(CWindow*); - virtual bool isWindowTiled(CWindow*); + virtual void onWindowCreatedTiling(PHLWINDOW, eDirection direction = DIRECTION_DEFAULT); + virtual void onWindowRemovedTiling(PHLWINDOW); + virtual bool isWindowTiled(PHLWINDOW); virtual void recalculateMonitor(const int&); - virtual void recalculateWindow(CWindow*); + virtual void recalculateWindow(PHLWINDOW); virtual void onBeginDragWindow(); - virtual void resizeActiveWindow(const Vector2D&, eRectCorner corner = CORNER_NONE, CWindow* pWindow = nullptr); - virtual void fullscreenRequestForWindow(CWindow*, eFullscreenMode, bool); + virtual void resizeActiveWindow(const Vector2D&, eRectCorner corner = CORNER_NONE, PHLWINDOW pWindow = nullptr); + virtual void fullscreenRequestForWindow(PHLWINDOW, eFullscreenMode, bool); virtual std::any layoutMessage(SLayoutMessageHeader, std::string); - virtual SWindowRenderLayoutHints requestRenderHints(CWindow*); - virtual void switchWindows(CWindow*, CWindow*); - virtual void moveWindowTo(CWindow*, const std::string& dir, bool silent); - virtual void alterSplitRatio(CWindow*, float, bool); + virtual SWindowRenderLayoutHints requestRenderHints(PHLWINDOW); + virtual void switchWindows(PHLWINDOW, PHLWINDOW); + virtual void moveWindowTo(PHLWINDOW, const std::string& dir, bool silent); + virtual void alterSplitRatio(PHLWINDOW, float, bool); virtual std::string getLayoutName(); - virtual void replaceWindowDataWith(CWindow* from, CWindow* to); + virtual void replaceWindowDataWith(PHLWINDOW from, PHLWINDOW to); virtual Vector2D predictSizeForNewWindowTiled(); virtual void onEnable(); @@ -80,13 +80,13 @@ class CHyprDwindleLayout : public IHyprLayout { int getNodesOnWorkspace(const int&); void applyNodeDataToWindow(SDwindleNodeData*, bool force = false); void calculateWorkspace(const PHLWORKSPACE& pWorkspace); - SDwindleNodeData* getNodeFromWindow(CWindow*); + SDwindleNodeData* getNodeFromWindow(PHLWINDOW); SDwindleNodeData* getFirstNodeOnWorkspace(const int&); SDwindleNodeData* getClosestNodeOnWorkspace(const int&, const Vector2D&); SDwindleNodeData* getMasterNodeOnWorkspace(const int&); - void toggleSplit(CWindow*); - void swapSplit(CWindow*); + void toggleSplit(PHLWINDOW); + void swapSplit(PHLWINDOW); eDirection overrideDirection = DIRECTION_DEFAULT; @@ -101,8 +101,8 @@ struct std::formatter<SDwindleNodeData*, CharT> : std::formatter<CharT> { if (!node) return std::format_to(out, "[Node nullptr]"); std::format_to(out, "[Node {:x}: workspace: {}, pos: {:j2}, size: {:j2}", (uintptr_t)node, node->workspaceID, node->box.pos(), node->box.size()); - if (!node->isNode && node->pWindow) - std::format_to(out, ", window: {:x}", node->pWindow); + if (!node->isNode && !node->pWindow.expired()) + std::format_to(out, ", window: {:x}", node->pWindow.lock()); return std::format_to(out, "]"); } }; |
