From c9041bf5c993bfb5c67256ff20be7a025d97ffc5 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Mon, 30 May 2022 20:51:45 +0200 Subject: [PATCH] notify workspace protocol of workspace group change --- src/Compositor.cpp | 1 + src/helpers/Workspace.cpp | 22 ++++++++++++++++++++++ src/helpers/Workspace.hpp | 2 ++ 3 files changed, 25 insertions(+) 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(wl_array_add(&m_wlrCoordinateArr, sizeof(int))) = (int)PMONITOR->vecPosition.x; + *reinterpret_cast(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