summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Buhr <andreas.buhr@qt.io>2021-01-29 10:32:07 +0100
committerAndreas Buhr <andreas.buhr@qt.io>2021-02-15 13:47:31 +0100
commit6bdffefaa89eacd306465c8e3bf1ca894ca25a98 (patch)
treec633f67fb69e7bfccd8a2848327058f35066520a /src
parent2fe6f551d955029638369e0801569441961ca04b (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.cpp4
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();
}