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.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp
index 60163150..72fa559e 100644
--- a/src/managers/KeybindManager.cpp
+++ b/src/managers/KeybindManager.cpp
@@ -1136,6 +1136,24 @@ void CKeybindManager::moveActiveTo(std::string args) {
if (!PLASTWINDOW || PLASTWINDOW->m_bIsFullscreen)
return;
+ if (PLASTWINDOW->m_bIsFloating) {
+ auto vPos = PLASTWINDOW->m_vRealPosition.goalv();
+ const auto PMONITOR = g_pCompositor->getMonitorFromID(PLASTWINDOW->m_iMonitorID);
+ const auto BORDERSIZE = PLASTWINDOW->getRealBorderSize();
+
+ switch (arg) {
+ case 'l': vPos.x = PMONITOR->vecReservedTopLeft.x + BORDERSIZE; break;
+ case 'r': vPos.x = PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x - PLASTWINDOW->m_vRealSize.goalv().x - BORDERSIZE; break;
+ case 't':
+ case 'u': vPos.y = PMONITOR->vecReservedTopLeft.y + BORDERSIZE; break;
+ case 'b':
+ case 'd': vPos.y = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PLASTWINDOW->m_vRealSize.goalv().y - BORDERSIZE; break;
+ }
+
+ PLASTWINDOW->m_vRealPosition = vPos + PMONITOR->vecPosition;
+ return;
+ }
+
// If the window to change to is on the same workspace, switch them
const auto PWINDOWTOCHANGETO = g_pCompositor->getWindowInDirection(PLASTWINDOW, arg);
if (PWINDOWTOCHANGETO) {