From 51838fb5f5b5b03bca99b324fb1f6494d3854f89 Mon Sep 17 00:00:00 2001 From: Virt <41426325+VirtCode@users.noreply.github.com> Date: Sun, 6 Apr 2025 23:41:27 +0200 Subject: [PATCH] layout: properly track floating window position (#9937) --- src/layout/IHyprLayout.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/layout/IHyprLayout.cpp b/src/layout/IHyprLayout.cpp index b353a50c..a0f15f5c 100644 --- a/src/layout/IHyprLayout.cpp +++ b/src/layout/IHyprLayout.cpp @@ -618,6 +618,8 @@ void IHyprLayout::onMouseMove(const Vector2D& mousePos) { DRAGGINGWINDOW->sendWindowSize(); } + DRAGGINGWINDOW->m_vPosition = wb.pos(); + } else if (g_pInputManager->dragMode == MBIND_RESIZE || g_pInputManager->dragMode == MBIND_RESIZE_FORCE_RATIO || g_pInputManager->dragMode == MBIND_RESIZE_BLOCK_RATIO) { if (DRAGGINGWINDOW->m_bIsFloating) { @@ -689,6 +691,9 @@ void IHyprLayout::onMouseMove(const Vector2D& mousePos) { DRAGGINGWINDOW->m_vRealPosition->setValueAndWarp(wb.pos()); DRAGGINGWINDOW->sendWindowSize(); } + + DRAGGINGWINDOW->m_vPosition = wb.pos(); + DRAGGINGWINDOW->m_vSize = wb.size(); } else { resizeActiveWindow(TICKDELTA, m_eGrabbedCorner, DRAGGINGWINDOW); } @@ -780,8 +785,8 @@ void IHyprLayout::changeWindowFloatingMode(PHLWINDOW pWindow) { *pWindow->m_vRealPosition = wb.pos(); *pWindow->m_vRealSize = wb.size(); - pWindow->m_vSize = wb.pos(); - pWindow->m_vPosition = wb.size(); + pWindow->m_vSize = wb.size(); + pWindow->m_vPosition = wb.pos(); g_pHyprRenderer->damageMonitor(pWindow->m_pMonitor.lock()); @@ -810,6 +815,7 @@ void IHyprLayout::moveActiveWindow(const Vector2D& delta, PHLWINDOW pWindow) { PWINDOW->setAnimationsToMove(); + PWINDOW->m_vPosition += delta; *PWINDOW->m_vRealPosition = PWINDOW->m_vRealPosition->goal() + delta; g_pHyprRenderer->damageWindow(PWINDOW);