From a8e872923045eddd314bc26553401a6eb17c57cc Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Mon, 11 Apr 2022 19:51:37 +0200 Subject: =?UTF-8?q?Added=20zext=5Fworkspace=20protocol=20support=20?= =?UTF-8?q?=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Compositor.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/Compositor.cpp') diff --git a/src/Compositor.cpp b/src/Compositor.cpp index 319a5eb1..d12cf288 100644 --- a/src/Compositor.cpp +++ b/src/Compositor.cpp @@ -90,6 +90,8 @@ CCompositor::CCompositor() { m_sWLRInhibitMgr = wlr_input_inhibit_manager_create(m_sWLDisplay); m_sWLRKbShInhibitMgr = wlr_keyboard_shortcuts_inhibit_v1_create(m_sWLDisplay); + + m_sWLREXTWorkspaceMgr = wlr_ext_workspace_manager_v1_create(m_sWLDisplay); } CCompositor::~CCompositor() { @@ -478,9 +480,9 @@ bool CCompositor::isWorkspaceVisible(const int& w) { return false; } -SWorkspace* CCompositor::getWorkspaceByID(const int& id) { +CWorkspace* CCompositor::getWorkspaceByID(const int& id) { for (auto& w : m_lWorkspaces) { - if (w.ID == id) + if (w.m_iID == id) return &w; } @@ -489,8 +491,9 @@ SWorkspace* CCompositor::getWorkspaceByID(const int& id) { void CCompositor::sanityCheckWorkspaces() { for (auto it = m_lWorkspaces.begin(); it != m_lWorkspaces.end(); ++it) { - if (getWindowsOnWorkspace(it->ID) == 0 && !isWorkspaceVisible(it->ID)) + if (getWindowsOnWorkspace(it->m_iID) == 0 && !isWorkspaceVisible(it->m_iID)) { it = m_lWorkspaces.erase(it); + } } } @@ -524,7 +527,7 @@ void CCompositor::fixXWaylandWindowsOnWorkspace(const int& id) { // moveXWaylandWindow only moves XWayland windows // so there is no need to check here // if the window is XWayland or not. - if (ISVISIBLE && (!PWORKSPACE->hasFullscreenWindow || w.m_bIsFullscreen)) + if (ISVISIBLE && (!PWORKSPACE->m_bHasFullscreenWindow || w.m_bIsFullscreen)) g_pXWaylandManager->moveXWaylandWindow(&w, w.m_vRealPosition); else g_pXWaylandManager->moveXWaylandWindow(&w, Vector2D(42069,42069)); @@ -633,4 +636,11 @@ CWindow* CCompositor::getWindowInDirection(CWindow* pWindow, char dir) { return longestIntersectWindow; return nullptr; +} + +void CCompositor::deactivateAllWLRWorkspaces() { + for (auto& w : m_lWorkspaces) { + if (w.m_pWlrHandle) + wlr_ext_workspace_handle_v1_set_active(w.m_pWlrHandle, false); + } } \ No newline at end of file -- cgit v1.2.3