From 01eb95acf0b4ae9f750f2245ff3aba43d26bf3f0 Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Fri, 20 Oct 2023 12:45:05 +0200 Subject: [PATCH] QCommonStyle: simplify removeAnimation Simplify removeAnimation by directly passing the pointer to remove to the function instead trying to figure them out later on and relying on QObject::sender(). Change-Id: I9de3a138c60b0da8dd1ab23fe8521798b7f4c13c Reviewed-by: Axel Spoerl --- src/widgets/styles/qcommonstyle.cpp | 17 +++++++---------- src/widgets/styles/qcommonstyle_p.h | 2 +- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index 7916609dd7..75518b0719 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -1275,11 +1275,11 @@ QStyleAnimation * QCommonStylePrivate::animation(const QObject *target) const void QCommonStylePrivate::startAnimation(QStyleAnimation *animation) const { Q_Q(const QCommonStyle); - stopAnimation(animation->target()); - QObjectPrivate::connect(animation, &QStyleAnimation::destroyed, - this, &QCommonStylePrivate::removeAnimation, - Qt::UniqueConnection); - animations.insert(animation->target(), animation); + const auto target = animation->target(); + stopAnimation(target); + QObject::connect(animation, &QStyleAnimation::destroyed, + q, [this, target]() { removeAnimation(target); }); + animations.insert(target, animation); animation->start(); } @@ -1294,12 +1294,9 @@ void QCommonStylePrivate::stopAnimation(const QObject *target) const } /*! \internal */ -void QCommonStylePrivate::removeAnimation() +void QCommonStylePrivate::removeAnimation(const QObject *target) const { - Q_Q(QCommonStyle); - QObject *animation = q->sender(); - if (animation) - animations.remove(animation->parent()); + animations.remove(target); } #endif diff --git a/src/widgets/styles/qcommonstyle_p.h b/src/widgets/styles/qcommonstyle_p.h index b9f32230f9..9d07408e22 100644 --- a/src/widgets/styles/qcommonstyle_p.h +++ b/src/widgets/styles/qcommonstyle_p.h @@ -95,7 +95,7 @@ public: QStyleAnimation* animation(const QObject *target) const; void startAnimation(QStyleAnimation *animation) const; void stopAnimation(const QObject *target) const; - void removeAnimation(); + void removeAnimation(const QObject *target) const; private: mutable QHash animations;