animations: fix borderangle once (#9149)

This commit is contained in:
Maximilian Seidler
2025-01-24 18:22:05 +00:00
committed by GitHub
parent fda9790cde
commit 80b2fd135b
3 changed files with 10 additions and 4 deletions

View File

@@ -1155,6 +1155,7 @@ void CCompositor::focusWindow(PHLWINDOW pWindow, SP<CWLSurfaceResource> pSurface
g_pXWaylandManager->activateWindow(pWindow, true); // sets the m_pLastWindow
pWindow->updateDynamicRules();
pWindow->onFocusAnimUpdate();
updateWindowAnimatedDecorationValues(pWindow);
@@ -1851,10 +1852,6 @@ void CCompositor::updateWindowAnimatedDecorationValues(PHLWINDOW pWindow) {
}
}
// tick angle if it's not running (aka dead)
if (!pWindow->m_fBorderAngleAnimationProgress->isBeingAnimated())
pWindow->m_fBorderAngleAnimationProgress->setValueAndWarp(0.f);
// opacity
const auto PWORKSPACE = pWindow->m_pWorkspace;
if (pWindow->isEffectiveInternalFSMode(FSMODE_FULLSCREEN)) {

View File

@@ -1274,6 +1274,14 @@ void CWindow::onWorkspaceAnimUpdate() {
m_vFloatingOffset = offset;
}
void CWindow::onFocusAnimUpdate() {
// borderangle once
if (m_fBorderAngleAnimationProgress->enabled() && !m_fBorderAngleAnimationProgress->isBeingAnimated()) {
m_fBorderAngleAnimationProgress->setValueAndWarp(0.f);
*m_fBorderAngleAnimationProgress = 1.f;
}
}
int CWindow::popupsCount() {
if (m_bIsX11)
return 0;

View File

@@ -454,6 +454,7 @@ class CWindow {
void switchWithWindowInGroup(PHLWINDOW pWindow);
void setAnimationsToMove();
void onWorkspaceAnimUpdate();
void onFocusAnimUpdate();
void onUpdateState();
void onUpdateMeta();
void onX11Configure(CBox box);