summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-04 19:58:51 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-07-04 19:58:51 +0200
commitcc8b8f595fa5c20b394394fe777451d4873608b3 (patch)
treebb3fddd7c431caa79f0003f707ee601fac91da44 /src
parent9742ac7596b83025c7ab0cf4e92d9db347b4b5c3 (diff)
disallow workspace special windowrule
Diffstat (limited to 'src')
-rw-r--r--src/events/Windows.cpp11
-rw-r--r--src/managers/KeybindManager.cpp7
2 files changed, 8 insertions, 10 deletions
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp
index 0b0ce909..66ba532a 100644
--- a/src/events/Windows.cpp
+++ b/src/events/Windows.cpp
@@ -122,6 +122,13 @@ void Events::listener_mapWindow(void* owner, void* data) {
requestedWorkspace = WORKSPACERQ;
}
+ if (requestedWorkspace == "special") {
+ requestedWorkspace = "";
+ workspaceSilent = false;
+ Debug::log(LOG, "windowrule=workspace special is not allowed!");
+ continue;
+ }
+
Debug::log(LOG, "Rule workspace matched by window %x, %s applied.", PWINDOW, r.szValue.c_str());
} else if (r.szRule.find("float") == 0) {
PWINDOW->m_bIsFloating = true;
@@ -170,10 +177,6 @@ void Events::listener_mapWindow(void* owner, void* data) {
}
requestedWorkspace = requestedWorkspace.substr(0, requestedWorkspace.find_first_of(' '));
-
- if (requestedWorkspace == "special") {
- workspaceSilent = true;
- }
}
if (!workspaceSilent) {
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 061f60a9..4ecf792e 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -891,12 +891,7 @@ void CKeybindManager::toggleSpecialWorkspace(std::string args) {
}
} else {
auto PSPECIALWORKSPACE = g_pCompositor->getWorkspaceByID(SPECIAL_WORKSPACE_ID);
-
- if (!PSPECIALWORKSPACE) {
- // ??? happens sometimes...?
- PSPECIALWORKSPACE = g_pCompositor->m_vWorkspaces.emplace_back(std::make_unique<CWorkspace>(g_pCompositor->m_pLastMonitor->ID, "special", true)).get();
- }
-
+
g_pCompositor->m_pLastMonitor->specialWorkspaceOpen = true;
g_pLayoutManager->getCurrentLayout()->recalculateMonitor(g_pCompositor->m_pLastMonitor->ID);