summaryrefslogtreecommitdiff
path: root/src/managers/KeybindManager.cpp
diff options
context:
space:
mode:
authorRaffaele Mancuso <54762742+raffaem@users.noreply.github.com>2023-01-08 18:37:24 +0100
committerGitHub <noreply@github.com>2023-01-08 18:37:24 +0100
commitc0c7c12bb907ea8cdc6e17653cddb3691102beac (patch)
tree9db9b3a0fea84dbc3248fb4f8df00d79e3a614ec /src/managers/KeybindManager.cpp
parente5dcbf73d881178c7f9c6306d287ed610d6efea1 (diff)
Pin dispatcher for a specific window (#1340)
Closes #1339
Diffstat (limited to 'src/managers/KeybindManager.cpp')
-rw-r--r--src/managers/KeybindManager.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index cb2faf11..a2f38f11 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -1784,16 +1784,30 @@ void CKeybindManager::swapActiveWorkspaces(std::string args) {
}
void CKeybindManager::pinActive(std::string args) {
- if (!g_pCompositor->m_pLastWindow || !g_pCompositor->m_pLastWindow->m_bIsFloating || g_pCompositor->m_pLastWindow->m_bIsFullscreen)
+
+ CWindow* PWINDOW = nullptr;
+
+ if (args != "" && args != "active" && args.length() > 1) {
+ PWINDOW = g_pCompositor->getWindowByRegex(args);
+ } else {
+ PWINDOW = g_pCompositor->m_pLastWindow;
+ }
+
+ if (!PWINDOW) {
+ Debug::log(ERR, "pin: window not found");
return;
+ }
- g_pCompositor->m_pLastWindow->m_bPinned = !g_pCompositor->m_pLastWindow->m_bPinned;
- g_pCompositor->m_pLastWindow->m_iWorkspaceID = g_pCompositor->getMonitorFromID(g_pCompositor->m_pLastWindow->m_iMonitorID)->activeWorkspace;
+ if (!PWINDOW->m_bIsFloating || PWINDOW->m_bIsFullscreen)
+ return;
+
+ PWINDOW->m_bPinned = !PWINDOW->m_bPinned;
+ PWINDOW->m_iWorkspaceID = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID)->activeWorkspace;
- g_pCompositor->m_pLastWindow->updateDynamicRules();
- g_pCompositor->updateWindowAnimatedDecorationValues(g_pCompositor->m_pLastWindow);
+ PWINDOW->updateDynamicRules();
+ g_pCompositor->updateWindowAnimatedDecorationValues(PWINDOW);
- const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(g_pCompositor->m_pLastWindow->m_iWorkspaceID);
+ const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(PWINDOW->m_iWorkspaceID);
PWORKSPACE->m_pLastFocusedWindow = g_pCompositor->vectorToWindowTiled(g_pInputManager->getMouseCoordsInternal());
}