diff --git a/src/corelib/animation/qpauseanimation.cpp b/src/corelib/animation/qpauseanimation.cpp index eb1e6c3c81b..344b21946e3 100644 --- a/src/corelib/animation/qpauseanimation.cpp +++ b/src/corelib/animation/qpauseanimation.cpp @@ -94,11 +94,10 @@ void QPauseAnimation::setDuration(int msecs) } Q_D(QPauseAnimation); - if (msecs != d->duration) { - d->duration = msecs; + d->duration.removeBindingUnlessInWrapper(); + if (msecs != d->duration.valueBypassingBindings()) { + d->duration.setValueBypassingBindings(msecs); d->duration.notify(); - } else { - d->duration.removeBindingUnlessInWrapper(); } } diff --git a/tests/auto/corelib/animation/qpauseanimation/CMakeLists.txt b/tests/auto/corelib/animation/qpauseanimation/CMakeLists.txt index a6ec4bffade..cc8a7ac6adc 100644 --- a/tests/auto/corelib/animation/qpauseanimation/CMakeLists.txt +++ b/tests/auto/corelib/animation/qpauseanimation/CMakeLists.txt @@ -10,4 +10,5 @@ qt_internal_add_test(tst_qpauseanimation tst_qpauseanimation.cpp LIBRARIES Qt::CorePrivate + Qt::TestPrivate ) diff --git a/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp b/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp index 53c80ef71f4..90357ef4776 100644 --- a/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp +++ b/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #include +#include #include #include @@ -456,6 +457,12 @@ void tst_QPauseAnimation::bindings() "QPauseAnimation::setDuration: cannot set a negative duration"); animation.setDuration(-1); QCOMPARE(durationObserver, 46); + + QTestPrivate::testReadWritePropertyBasics(animation, 10, 20, "duration"); + if (QTest::currentTestFailed()) { + qDebug("Failed property test for QPauseAnimation::duration"); + return; + } } QTEST_MAIN(tst_QPauseAnimation)