From 6bdffefaa89eacd306465c8e3bf1ca894ca25a98 Mon Sep 17 00:00:00 2001 From: Andreas Buhr Date: Fri, 29 Jan 2021 10:32:07 +0100 Subject: Fix QTimer::setInterval to remove existing bindings A recent change ( a7ca8b1a2864e47cacd530f6b10d2b415c5193f7 ) led to failure of binding removal in setInterval(). This was fixed by introducing setterScope. This patch add unit tests for this regression. Change-Id: Ic8da1f2d82ad6c8ccd81c9b1eff72d42cf75f28a Reviewed-by: Fabian Kosmale --- src/corelib/kernel/qtimer.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp index 8148ced222..49c57cb6ee 100644 --- a/src/corelib/kernel/qtimer.cpp +++ b/src/corelib/kernel/qtimer.cpp @@ -257,6 +257,7 @@ void QTimer::start() void QTimer::start(int msec) { Q_D(QTimer); + d->inter.removeBindingUnlessInWrapper(); d->inter.setValueBypassingBindings(msec); start(); d->inter.markDirty(); @@ -753,6 +754,8 @@ QBindable QTimer::bindableSingleShot() void QTimer::setInterval(int msec) { Q_D(QTimer); + d->inter.removeBindingUnlessInWrapper(); + d->inter.setValueBypassingBindings(msec); if (d->id != INV_TIMER) { // create new timer QObject::killTimer(d->id); // restart timer @@ -760,6 +763,7 @@ void QTimer::setInterval(int msec) // No need to call markDirty() for d->isActiveData here, // as timer state actually does not change } + d->inter.markDirty(); } -- cgit v1.2.3