diff options
| author | Alexander <51529891+Truenya@users.noreply.github.com> | 2025-01-11 19:05:53 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-11 16:05:53 +0000 |
| commit | 15dc024a398d35957ccfb50ddade5f456a1646b5 (patch) | |
| tree | dcc4644a49bcf8f3ae8d390526dffcf8b2dfd783 /src/desktop | |
| parent | 3b85690aa6d9c14bb926692e25cc4480b85200ab (diff) | |
keybinds: fix previous_per_monitor logic (#9010)
Co-authored-by: Крылов Александр <aleksandr.krylov@hyperus.team>
Diffstat (limited to 'src/desktop')
| -rw-r--r-- | src/desktop/Workspace.cpp | 10 | ||||
| -rw-r--r-- | src/desktop/Workspace.hpp | 22 |
2 files changed, 13 insertions, 19 deletions
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<Vector2D> 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<bool> onlyTiled = {}, std::optional<bool> 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<HOOK_CALLBACK_FN> m_pFocusedWindowHook; bool m_bInert = true; |
