summaryrefslogtreecommitdiff
path: root/src/helpers/Workspace.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-04-11 19:51:37 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-04-11 19:51:37 +0200
commita8e872923045eddd314bc26553401a6eb17c57cc (patch)
treee8fa6a207b485cebd78f752e7683452000f0be48 /src/helpers/Workspace.cpp
parentb56343133d21622a6187bb1ef8906023ecbc09ef (diff)
Added zext_workspace protocol support 🎉
Diffstat (limited to 'src/helpers/Workspace.cpp')
-rw-r--r--src/helpers/Workspace.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/helpers/Workspace.cpp b/src/helpers/Workspace.cpp
new file mode 100644
index 00000000..8c535941
--- /dev/null
+++ b/src/helpers/Workspace.cpp
@@ -0,0 +1,29 @@
+#include "Workspace.hpp"
+#include "../Compositor.hpp"
+
+CWorkspace::CWorkspace(int monitorID) {
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(monitorID);
+
+ if (!PMONITOR) {
+ Debug::log(ERR, "Attempted a creation of CWorkspace with an invalid monitor?");
+ return;
+ }
+
+ m_iMonitorID = monitorID;
+
+ m_pWlrHandle = wlr_ext_workspace_handle_v1_create(PMONITOR->pWLRWorkspaceGroupHandle);
+
+ // set geometry here cuz we can
+ wl_array_init(&m_wlrCoordinateArr);
+ *reinterpret_cast<int*>(wl_array_add(&m_wlrCoordinateArr, sizeof(int))) = (int)PMONITOR->vecPosition.x;
+ *reinterpret_cast<int*>(wl_array_add(&m_wlrCoordinateArr, sizeof(int))) = (int)PMONITOR->vecPosition.y;
+ wlr_ext_workspace_handle_v1_set_coordinates(m_pWlrHandle, &m_wlrCoordinateArr);
+}
+
+CWorkspace::~CWorkspace() {
+ if (m_pWlrHandle) {
+ wlr_ext_workspace_handle_v1_set_active(m_pWlrHandle, false);
+ wlr_ext_workspace_handle_v1_destroy(m_pWlrHandle);
+ m_pWlrHandle = nullptr;
+ }
+} \ No newline at end of file