summaryrefslogtreecommitdiff
path: root/src/managers/KeybindManager.cpp
diff options
context:
space:
mode:
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());
}