From 15dc024a398d35957ccfb50ddade5f456a1646b5 Mon Sep 17 00:00:00 2001 From: Alexander <51529891+Truenya@users.noreply.github.com> Date: Sat, 11 Jan 2025 19:05:53 +0300 Subject: keybinds: fix previous_per_monitor logic (#9010) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Крылов Александр --- src/desktop/Workspace.cpp | 10 ++-------- src/desktop/Workspace.hpp | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 19 deletions(-) (limited to 'src/desktop') diff --git a/src/desktop/Workspace.cpp b/src/desktop/Workspace.cpp index 376288ed..07c1a435 100644 --- a/src/desktop/Workspace.cpp +++ b/src/desktop/Workspace.cpp @@ -52,10 +52,7 @@ void CWorkspace::init(PHLWORKSPACE self) { EMIT_HOOK_EVENT("createWorkspace", this); } -SWorkspaceIDName CWorkspace::getPrevWorkspaceIDName(bool perMonitor) const { - if (perMonitor) - return m_sPrevWorkspacePerMonitor; - +SWorkspaceIDName CWorkspace::getPrevWorkspaceIDName() const { return m_sPrevWorkspace; } @@ -216,10 +213,7 @@ void CWorkspace::rememberPrevWorkspace(const PHLWORKSPACE& prev) { m_sPrevWorkspace.id = prev->m_iID; m_sPrevWorkspace.name = prev->m_szName; - if (prev->m_pMonitor == m_pMonitor) { - m_sPrevWorkspacePerMonitor.id = prev->m_iID; - m_sPrevWorkspacePerMonitor.name = prev->m_szName; - } + prev->m_pMonitor->addPrevWorkspaceID(prev->m_iID); } std::string CWorkspace::getConfigName() { diff --git a/src/desktop/Workspace.hpp b/src/desktop/Workspace.hpp index f86dd656..e9859d4f 100644 --- a/src/desktop/Workspace.hpp +++ b/src/desktop/Workspace.hpp @@ -24,17 +24,14 @@ class CWorkspace { // Workspaces ID-based have IDs > 0 // and workspaces name-based have IDs starting with -1337 - WORKSPACEID m_iID = WORKSPACE_INVALID; - std::string m_szName = ""; - PHLMONITORREF m_pMonitor; - // Previous workspace ID and name is stored during a workspace change, allowing travel - // to the previous workspace. - SWorkspaceIDName m_sPrevWorkspace, m_sPrevWorkspacePerMonitor; + WORKSPACEID m_iID = WORKSPACE_INVALID; + std::string m_szName = ""; + PHLMONITORREF m_pMonitor; - bool m_bHasFullscreenWindow = false; - eFullscreenMode m_efFullscreenMode = FSMODE_NONE; + bool m_bHasFullscreenWindow = false; + eFullscreenMode m_efFullscreenMode = FSMODE_NONE; - wl_array m_wlrCoordinateArr; + wl_array m_wlrCoordinateArr; // for animations PHLANIMVAR m_vRenderOffset; @@ -72,7 +69,7 @@ class CWorkspace { std::string getConfigName(); bool matchesStaticSelector(const std::string& selector); void markInert(); - SWorkspaceIDName getPrevWorkspaceIDName(bool perMonitor) const; + SWorkspaceIDName getPrevWorkspaceIDName() const; void updateWindowDecos(); void updateWindowData(); int getWindows(std::optional onlyTiled = {}, std::optional onlyVisible = {}); @@ -88,7 +85,10 @@ class CWorkspace { void updateWindows(); private: - void init(PHLWORKSPACE self); + void init(PHLWORKSPACE self); + // Previous workspace ID and name is stored during a workspace change, allowing travel + // to the previous workspace. + SWorkspaceIDName m_sPrevWorkspace; SP m_pFocusedWindowHook; bool m_bInert = true; -- cgit v1.2.3