diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-19 15:59:53 +0100 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-03-19 15:59:53 +0100 |
| commit | 61e10e20484e8867656d39cbaa6d75c3aab7eba6 (patch) | |
| tree | c57b575aff261990764929ad855176228791aa26 /src/layout/DwindleLayout.hpp | |
| parent | e664b0b6920571b864776319dd32153e104e748d (diff) | |
added a layoutmanager and basic dwindle
Diffstat (limited to 'src/layout/DwindleLayout.hpp')
| -rw-r--r-- | src/layout/DwindleLayout.hpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/layout/DwindleLayout.hpp b/src/layout/DwindleLayout.hpp new file mode 100644 index 00000000..b666d72a --- /dev/null +++ b/src/layout/DwindleLayout.hpp @@ -0,0 +1,40 @@ +#pragma once + +#include "IHyprLayout.hpp" +#include <list> + +struct SDwindleNodeData { + SDwindleNodeData* pParent = nullptr; + bool isNode = false; + + CWindow* pWindow = nullptr; + + std::array<SDwindleNodeData*, 2> children = { nullptr, nullptr }; + + Vector2D position; + Vector2D size; + + int monitorID = -1; + + // For list lookup + bool operator==(const SDwindleNodeData& rhs) { + return pWindow == rhs.pWindow && monitorID == rhs.monitorID && position == rhs.position && size == rhs.size && pParent == rhs.pParent; + } + + // TODO: recalcsizepos for dynamic +}; + +class CHyprDwindleLayout : public IHyprLayout { +public: + virtual void onWindowCreated(CWindow*); + virtual void onWindowRemoved(CWindow*); + +private: + + std::list<SDwindleNodeData> m_lDwindleNodesData; + + int getNodesOnMonitor(const int&); + void applyNodeDataToWindow(SDwindleNodeData*); + SDwindleNodeData* getNodeFromWindow(CWindow*); + SDwindleNodeData* getFirstNodeOnMonitor(const int&); +};
\ No newline at end of file |
