summaryrefslogtreecommitdiff
path: root/src/layout/MasterLayout.cpp
diff options
context:
space:
mode:
authorMaarten de Vries <maarten@de-vri.es>2024-04-17 13:04:16 +0200
committerGitHub <noreply@github.com>2024-04-17 12:04:16 +0100
commite57a2d7ec87ae775828ea8628ef4eeafce8e6e70 (patch)
tree45e5f30a7e463924a380bb3394ba314667efc7bc /src/layout/MasterLayout.cpp
parente8e02e81e84bb04efa0c926361ec80c60744f665 (diff)
keybindmgr: add optional `silent` suffix to `movewindow`. (#5597)
With the `silent` suffix, the focus remains on the current position in the layout or the current monitor, instead of following the moved window. When combined with `movewindow mon:X`, this this allows you to get the same behavior as xmonad's `windowToScreen` command.
Diffstat (limited to 'src/layout/MasterLayout.cpp')
-rw-r--r--src/layout/MasterLayout.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp
index 0999303f..4ef68712 100644
--- a/src/layout/MasterLayout.cpp
+++ b/src/layout/MasterLayout.cpp
@@ -949,7 +949,7 @@ SWindowRenderLayoutHints CHyprMasterLayout::requestRenderHints(CWindow* pWindow)
return hints; // master doesnt have any hints
}
-void CHyprMasterLayout::moveWindowTo(CWindow* pWindow, const std::string& dir) {
+void CHyprMasterLayout::moveWindowTo(CWindow* pWindow, const std::string& dir, bool silent) {
if (!isDirection(dir))
return;
@@ -965,12 +965,16 @@ void CHyprMasterLayout::moveWindowTo(CWindow* pWindow, const std::string& dir) {
onWindowRemovedTiling(pWindow);
pWindow->moveToWorkspace(PWINDOW2->m_pWorkspace);
pWindow->m_iMonitorID = PWINDOW2->m_iMonitorID;
- const auto pMonitor = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
- g_pCompositor->setActiveMonitor(pMonitor);
+ if (!silent) {
+ const auto pMonitor = g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID);
+ g_pCompositor->setActiveMonitor(pMonitor);
+ }
onWindowCreatedTiling(pWindow);
} else {
// if same monitor, switch windows
switchWindows(pWindow, PWINDOW2);
+ if (silent)
+ g_pCompositor->focusWindow(PWINDOW2);
}
}