summaryrefslogtreecommitdiff
path: root/src/desktop
diff options
context:
space:
mode:
authorAlexander <51529891+Truenya@users.noreply.github.com>2025-01-11 19:05:53 +0300
committerGitHub <noreply@github.com>2025-01-11 16:05:53 +0000
commit15dc024a398d35957ccfb50ddade5f456a1646b5 (patch)
treedcc4644a49bcf8f3ae8d390526dffcf8b2dfd783 /src/desktop
parent3b85690aa6d9c14bb926692e25cc4480b85200ab (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.cpp10
-rw-r--r--src/desktop/Workspace.hpp22
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;