@@ -31,8 +31,8 @@ public:
3131 }
3232 virtual int interval() const { return m_timer.interval(); }
3333 virtual void setInterval(int msecs) { m_timer.setInterval(msecs); }
34− virtual void start() { m_timer.start(); }
35− virtual void stop() { m_timer.stop(); }
34+ virtual void start() { m_timer.start(); UbuntuGestures::AbstractTimer::start(); }
35+ virtual void stop() { m_timer.stop(); UbuntuGestures::AbstractTimer::stop(); }
3636private:
3737 QTimer m_timer;
3838};
@@ -120,14 +120,13 @@ void DirectionalDragArea::setMaxSilenceTime(int value)
120120
121121void DirectionalDragArea::setRecognitionTimer(UbuntuGestures::AbstractTimer *timer)
122122{
123− // NB: We assume test code (the only client of this method) won't call it while
124− // the current timer is active
125−
126123 int interval = 0;
124+ bool timerWasRunning = false;
127125
128126 // can be null when called from the constructor
129127 if (m_recognitionTimer) {
130128 interval = m_recognitionTimer->interval();
129+ timerWasRunning = m_recognitionTimer->isRunning();
131130 if (m_recognitionTimer->parent() == this) {
132131 delete m_recognitionTimer;
133132 }
@@ -137,6 +136,9 @@ void DirectionalDragArea::setRecognitionTimer(UbuntuGestures::AbstractTimer *tim
137136 timer->setInterval(interval);
138137 connect(timer, &UbuntuGestures::AbstractTimer::timeout,
139138 this, &DirectionalDragArea::checkSpeed);
139+ if (timerWasRunning) {
140+ m_recognitionTimer->start();
141+ }
140142}
141143
142144void DirectionalDragArea::setAxisVelocityCalculator(AxisVelocityCalculator *newVelCalc)