diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-04-11 19:51:37 +0200 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2022-04-11 19:51:37 +0200 |
| commit | a8e872923045eddd314bc26553401a6eb17c57cc (patch) | |
| tree | e8fa6a207b485cebd78f752e7683452000f0be48 /src/helpers/Workspace.cpp | |
| parent | b56343133d21622a6187bb1ef8906023ecbc09ef (diff) | |
Added zext_workspace protocol support 🎉
Diffstat (limited to 'src/helpers/Workspace.cpp')
| -rw-r--r-- | src/helpers/Workspace.cpp | 29 |
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 |
