diff options
| author | Raffaele Mancuso <54762742+raffaem@users.noreply.github.com> | 2023-01-08 18:37:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-08 18:37:24 +0100 |
| commit | c0c7c12bb907ea8cdc6e17653cddb3691102beac (patch) | |
| tree | 9db9b3a0fea84dbc3248fb4f8df00d79e3a614ec /src/managers/KeybindManager.cpp | |
| parent | e5dcbf73d881178c7f9c6306d287ed610d6efea1 (diff) | |
Pin dispatcher for a specific window (#1340)
Closes #1339
Diffstat (limited to 'src/managers/KeybindManager.cpp')
| -rw-r--r-- | src/managers/KeybindManager.cpp | 26 |
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()); } |
