diff options
Diffstat (limited to 'src/layout/MasterLayout.hpp')
| -rw-r--r-- | src/layout/MasterLayout.hpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/layout/MasterLayout.hpp b/src/layout/MasterLayout.hpp index 3e1744df..b7761cef 100644 --- a/src/layout/MasterLayout.hpp +++ b/src/layout/MasterLayout.hpp @@ -1,11 +1,20 @@ #pragma once #include "IHyprLayout.hpp" +#include <vector> #include <list> #include <deque> enum eFullscreenMode : uint8_t; +//orientation determines which side of the screen the master area resides +enum eOrientation : uint8_t { + ORIENTATION_LEFT = 0, + ORIENTATION_TOP, + ORIENTATION_RIGHT, + ORIENTATION_BOTTOM +}; + struct SMasterNodeData { bool isMaster = false; float percMaster = 0.5f; @@ -24,6 +33,15 @@ struct SMasterNodeData { } }; +struct SMasterWorkspaceData { + int workspaceID = -1; + eOrientation orientation = ORIENTATION_LEFT; + + bool operator==(const SMasterWorkspaceData& rhs) { + return workspaceID == rhs.workspaceID; + } +}; + class CHyprMasterLayout : public IHyprLayout { public: virtual void onWindowCreatedTiling(CWindow*); @@ -44,7 +62,8 @@ public: private: - std::list<SMasterNodeData> m_lMasterNodesData; + std::list<SMasterNodeData> m_lMasterNodesData; + std::vector<SMasterWorkspaceData> m_lMasterWorkspacesData; bool m_bForceWarps = false; @@ -52,9 +71,11 @@ private: void applyNodeDataToWindow(SMasterNodeData*); SMasterNodeData* getNodeFromWindow(CWindow*); SMasterNodeData* getMasterNodeOnWorkspace(const int&); + SMasterWorkspaceData* getMasterWorkspaceData(const int&); void calculateWorkspace(const int&); CWindow* getNextWindow(CWindow*, bool); int getMastersOnWorkspace(const int&); friend struct SMasterNodeData; -};
\ No newline at end of file + friend struct SMasterWorkspaceData; +}; |
