diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp index 8148ced2220..49c57cb6eeb 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(); } diff --git a/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp index cd0a0d03d97..221d818c6bf 100644 --- a/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp +++ b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp @@ -1158,6 +1158,10 @@ void tst_QTimer::bindTimer() QCOMPARE(timer.interval(), 10); interval = 100; QCOMPARE(timer.interval(), 100); + timer.setInterval(50); + QCOMPARE(timer.interval(), 50); + interval = 30; + QCOMPARE(timer.interval(), 50); // timerType property QCOMPARE(timer.timerType(), Qt::CoarseTimer);