From 4c95ee6744e4e2fdbfe3d7d7217932bb8ddfe622 Mon Sep 17 00:00:00 2001 From: uncor3 Date: Wed, 19 Nov 2025 20:37:23 -0800 Subject: [PATCH] move animation setup to finalizeStyles - This commit fixed layout shifting in glider --- src/ztabwidget.cpp | 10 ++++++---- src/ztabwidget.h | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/ztabwidget.cpp b/src/ztabwidget.cpp index 1101541..dddacc5 100644 --- a/src/ztabwidget.cpp +++ b/src/ztabwidget.cpp @@ -85,10 +85,6 @@ void ZTabWidget::setupGlider() " border-radius: 1px;" "}"); m_glider->hide(); // Hide initially until tabs are added - - m_gliderAnimation = new QPropertyAnimation(m_glider, "pos"); - m_gliderAnimation->setDuration(250); - m_gliderAnimation->setEasingCurve(QEasingCurve::OutCubic); } ZTab *ZTabWidget::addTab(QWidget *widget, const QString &label) @@ -132,6 +128,9 @@ void ZTabWidget::finalizeStyles() int targetX = tab->pos().x(); int targetY = tab->pos().y() + tab->size().height() - 2; m_glider->move(targetX, targetY); + m_gliderAnimation = new QPropertyAnimation(m_glider, "pos"); + m_gliderAnimation->setDuration(250); + m_gliderAnimation->setEasingCurve(QEasingCurve::OutCubic); m_glider->show(); } }); @@ -183,6 +182,9 @@ void ZTabWidget::animateGlider(int index) // targetTabPos.y() + targetTabSize.height() + 6; // Position at bottom targetTabPos.y() + targetTabSize.height() - 2; // Position at bottom + if (m_gliderAnimation == nullptr) + return; + m_gliderAnimation->stop(); m_gliderAnimation->setStartValue(m_glider->pos()); m_gliderAnimation->setEndValue(QPoint(targetX, targetY)); diff --git a/src/ztabwidget.h b/src/ztabwidget.h index ceab46b..0ecab38 100644 --- a/src/ztabwidget.h +++ b/src/ztabwidget.h @@ -67,7 +67,7 @@ private: QStackedWidget *m_stackedWidget; QButtonGroup *m_buttonGroup; QWidget *m_glider; - QPropertyAnimation *m_gliderAnimation; + QPropertyAnimation *m_gliderAnimation = nullptr; QList m_tabs; QList m_widgets; int m_currentIndex;