summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Compositor.cpp1
-rw-r--r--src/helpers/Workspace.cpp22
-rw-r--r--src/helpers/Workspace.hpp2
3 files changed, 25 insertions, 0 deletions
diff --git a/src/Compositor.cpp b/src/Compositor.cpp
index 9241a56a..f11a2a4d 100644
--- a/src/Compositor.cpp
+++ b/src/Compositor.cpp
@@ -997,6 +997,7 @@ void CCompositor::moveWorkspaceToMonitor(CWorkspace* pWorkspace, SMonitor* pMoni
// move the workspace
pWorkspace->m_iMonitorID = pMonitor->ID;
+ pWorkspace->moveToMonitor(pMonitor->ID);
for (auto& w : m_lWindows) {
if (w.m_iWorkspaceID == pWorkspace->m_iID)
diff --git a/src/helpers/Workspace.cpp b/src/helpers/Workspace.cpp
index 1b007319..d90d1391 100644
--- a/src/helpers/Workspace.cpp
+++ b/src/helpers/Workspace.cpp
@@ -77,4 +77,26 @@ void CWorkspace::setActive(bool on) {
if (m_pWlrHandle) {
wlr_ext_workspace_handle_v1_set_active(m_pWlrHandle, on);
}
+}
+
+void CWorkspace::moveToMonitor(const int& id) {
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(id);
+
+ if (!PMONITOR)
+ return;
+
+ wlr_ext_workspace_handle_v1_set_active(m_pWlrHandle, false);
+ wlr_ext_workspace_handle_v1_destroy(m_pWlrHandle);
+
+ 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);
+ wlr_ext_workspace_handle_v1_set_hidden(m_pWlrHandle, false);
+ wlr_ext_workspace_handle_v1_set_urgent(m_pWlrHandle, false);
+
+ wlr_ext_workspace_handle_v1_set_name(m_pWlrHandle, m_szName.c_str());
} \ No newline at end of file
diff --git a/src/helpers/Workspace.hpp b/src/helpers/Workspace.hpp
index a00126cb..2c1ac6d9 100644
--- a/src/helpers/Workspace.hpp
+++ b/src/helpers/Workspace.hpp
@@ -35,4 +35,6 @@ public:
void startAnim(bool in, bool left, bool instant = false);
void setActive(bool on);
+
+ void moveToMonitor(const int&);
}; \ No newline at end of file