diff options
author | Andreas Buhr <andreas.buhr@qt.io> | 2021-01-29 10:32:07 +0100 |
---|---|---|
committer | Andreas Buhr <andreas.buhr@qt.io> | 2021-02-15 13:47:31 +0100 |
commit | 6bdffefaa89eacd306465c8e3bf1ca894ca25a98 (patch) | |
tree | c633f67fb69e7bfccd8a2848327058f35066520a /src | |
parent | 2fe6f551d955029638369e0801569441961ca04b (diff) |
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 <fabian.kosmale@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/kernel/qtimer.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
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<bool> 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(); } |