summaryrefslogtreecommitdiff
path: root/src/desktop/Workspace.cpp
diff options
context:
space:
mode:
authorAlexander <51529891+Truenya@users.noreply.github.com>2024-06-23 00:52:42 +0300
committerGitHub <noreply@github.com>2024-06-22 23:52:42 +0200
commit7f09646ab8b5b6d9f835681d0af5d7a0dc29d8f1 (patch)
tree269ecbddad6cafe84c56c167e767617fcf324ee1 /src/desktop/Workspace.cpp
parent0b924f541c744f96d32c9a0d98dcfd90205bab4c (diff)
core: add ability to select previous workspace per monitor (#6598)
Co-authored-by: Крылов Александр <aleksandr.krylov@hyperus.team>
Diffstat (limited to 'src/desktop/Workspace.cpp')
-rw-r--r--src/desktop/Workspace.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/desktop/Workspace.cpp b/src/desktop/Workspace.cpp
index 04685bd5..34db914e 100644
--- a/src/desktop/Workspace.cpp
+++ b/src/desktop/Workspace.cpp
@@ -57,6 +57,13 @@ void CWorkspace::init(PHLWORKSPACE self) {
EMIT_HOOK_EVENT("createWorkspace", this);
}
+SWorkspaceIDName CWorkspace::getPrevWorkspaceIDName(bool perMonitor) const {
+ if (perMonitor)
+ return m_sPrevWorkspacePerMonitor;
+
+ return m_sPrevWorkspace;
+}
+
CWorkspace::~CWorkspace() {
m_vRenderOffset.unregister();
@@ -196,7 +203,7 @@ PHLWINDOW CWorkspace::getLastFocusedWindow() {
void CWorkspace::rememberPrevWorkspace(const PHLWORKSPACE& prev) {
if (!prev) {
- m_sPrevWorkspace.iID = -1;
+ m_sPrevWorkspace.id = -1;
m_sPrevWorkspace.name = "";
return;
}
@@ -206,8 +213,13 @@ void CWorkspace::rememberPrevWorkspace(const PHLWORKSPACE& prev) {
return;
}
- m_sPrevWorkspace.iID = prev->m_iID;
+ m_sPrevWorkspace.id = prev->m_iID;
m_sPrevWorkspace.name = prev->m_szName;
+
+ if (prev->m_iMonitorID == m_iMonitorID) {
+ m_sPrevWorkspacePerMonitor.id = prev->m_iID;
+ m_sPrevWorkspacePerMonitor.name = prev->m_szName;
+ }
}
std::string CWorkspace::getConfigName() {
@@ -228,9 +240,7 @@ bool CWorkspace::matchesStaticSelector(const std::string& selector_) {
return true;
if (isNumber(selector)) {
-
- std::string wsname = "";
- int wsid = getWorkspaceIDFromString(selector, wsname);
+ const auto& [wsid, wsname] = getWorkspaceIDNameFromString(selector);
if (wsid == WORKSPACE_INVALID)
return false;