summaryrefslogtreecommitdiff
path: root/src/layout/MasterLayout.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/layout/MasterLayout.hpp')
-rw-r--r--src/layout/MasterLayout.hpp25
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;
+};