summaryrefslogtreecommitdiff
path: root/src/layout
diff options
context:
space:
mode:
authorthejch <66577496+thejch@users.noreply.github.com>2024-03-18 19:52:52 -0700
committerGitHub <noreply@github.com>2024-03-19 02:52:52 +0000
commite6532ba024762ba15423ae0a0935dfe4fb4196b1 (patch)
treee0b5ed767c2392da7c59783f9f8f101744356f07 /src/layout
parent7a31c954e5962db07b1b83e8a7340c38e7988ab6 (diff)
animations: Fix incorrect animation when manually moving a window when its being created (#5141)
* fix incorrect rendering when manually moving a window when its being created * add setAnimationsToMove
Diffstat (limited to 'src/layout')
-rw-r--r--src/layout/DwindleLayout.cpp5
-rw-r--r--src/layout/IHyprLayout.cpp2
-rw-r--r--src/layout/MasterLayout.cpp5
3 files changed, 12 insertions, 0 deletions
diff --git a/src/layout/DwindleLayout.cpp b/src/layout/DwindleLayout.cpp
index 1ce6aa82..c34f04cc 100644
--- a/src/layout/DwindleLayout.cpp
+++ b/src/layout/DwindleLayout.cpp
@@ -924,6 +924,8 @@ void CHyprDwindleLayout::moveWindowTo(CWindow* pWindow, const std::string& dir)
default: UNREACHABLE();
}
+ pWindow->setAnimationsToMove();
+
onWindowRemovedTiling(pWindow);
m_vOverrideFocalPoint = focalPoint;
@@ -969,6 +971,9 @@ void CHyprDwindleLayout::switchWindows(CWindow* pWindow, CWindow* pWindow2) {
std::swap(pWindow2->m_iWorkspaceID, pWindow->m_iWorkspaceID);
}
+ pWindow->setAnimationsToMove();
+ pWindow2->setAnimationsToMove();
+
// recalc the workspace
getMasterNodeOnWorkspace(PNODE->workspaceID)->recalcSizePosRecursive();
diff --git a/src/layout/IHyprLayout.cpp b/src/layout/IHyprLayout.cpp
index f992899d..c8c00183 100644
--- a/src/layout/IHyprLayout.cpp
+++ b/src/layout/IHyprLayout.cpp
@@ -552,6 +552,8 @@ void IHyprLayout::moveActiveWindow(const Vector2D& delta, CWindow* pWindow) {
return;
}
+ PWINDOW->setAnimationsToMove();
+
PWINDOW->m_vRealPosition = PWINDOW->m_vRealPosition.goal() + delta;
g_pHyprRenderer->damageWindow(PWINDOW);
diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp
index 7919d50f..1c6be8d6 100644
--- a/src/layout/MasterLayout.cpp
+++ b/src/layout/MasterLayout.cpp
@@ -970,6 +970,8 @@ void CHyprMasterLayout::moveWindowTo(CWindow* pWindow, const std::string& dir) {
const auto PWINDOW2 = g_pCompositor->getWindowInDirection(pWindow, dir[0]);
+ pWindow->setAnimationsToMove();
+
if (pWindow->m_iWorkspaceID != PWINDOW2->m_iWorkspaceID) {
// if different monitors, send to monitor
onWindowRemovedTiling(pWindow);
@@ -1002,6 +1004,9 @@ void CHyprMasterLayout::switchWindows(CWindow* pWindow, CWindow* pWindow2) {
PNODE->pWindow = pWindow2;
PNODE2->pWindow = pWindow;
+ pWindow->setAnimationsToMove();
+ pWindow2->setAnimationsToMove();
+
recalculateMonitor(pWindow->m_iMonitorID);
if (PNODE2->workspaceID != PNODE->workspaceID)
recalculateMonitor(pWindow2->m_iMonitorID);