42 lines
1.7 KiB
Diff
42 lines
1.7 KiB
Diff
From: Anders da Silva Rytter Hansen <andersrh@users.noreply.github.com>
|
|
Date: Thu, 2 Jul 2026 09:40:00 -0300
|
|
Subject: [PATCH] shell: handle zero-duration floating panel animation
|
|
|
|
The QML side now disables the floating panel animation by setting
|
|
floatingnessAnimationDuration to 0. With a zero-duration
|
|
QPropertyAnimation the valueChanged signal may not be emitted, so update
|
|
m_floatingness and the QML property synchronously before doing the
|
|
geometry/mask/strut updates.
|
|
|
|
References: https://bugs.kde.org/show_bug.cgi?id=484501 and https://github.com/orgs/Sonic-DE/discussions/20
|
|
---
|
|
shell/panelview.cpp | 11 +++++++++++
|
|
1 file changed, 11 insertions(+)
|
|
|
|
diff --git a/shell/panelview.cpp b/shell/panelview.cpp
|
|
--- a/shell/panelview.cpp
|
|
+++ b/shell/panelview.cpp
|
|
@@ -1782,6 +1782,13 @@ void PanelView::updateFloating()
|
|
m_topFloatingPadding = rootObject()->property("fixedTopFloatingPadding").toInt();
|
|
m_bottomFloatingPadding = rootObject()->property("fixedBottomFloatingPadding").toInt();
|
|
|
|
+ const bool instantAnimation = m_floatingnessAnimation.duration() == 0;
|
|
+ if (instantAnimation) {
|
|
+ // Skip the animation; jump straight to the target value.
|
|
+ m_floatingness = m_floatingnessAnimation.endValue().toDouble();
|
|
+ rootObject()->setProperty("floatingness", m_floatingness);
|
|
+ }
|
|
+
|
|
positionAndResizePanel();
|
|
updateExclusiveZone();
|
|
updateShadows();
|
|
@@ -1789,6 +1796,10 @@ void PanelView::updateFloating()
|
|
// positionPanel and updateMask are called by m_floatingnessAnimation
|
|
if (m_floatingnessAnimation.targetObject()) {
|
|
+ if (instantAnimation) {
|
|
+ updateMask();
|
|
+ return;
|
|
+ }
|
|
m_floatingnessAnimation.start();
|
|
}
|
|
}
|