on xenial help sign in
DirectionalDragArea: Reset status if disabled while dragging
7c8f6fbDaniel d'Andrada
plugins/Ubuntu/Gestures/DirectionalDragArea.cpp+9
@@ -129,6 +129,8 @@ DirectionalDragArea::DirectionalDragArea(QQuickItem *parent)
129 m_recognitionTimer->setInterval(60);
129 m_recognitionTimer->setInterval(60);
130
130
131 m_velocityCalculator = new AxisVelocityCalculator(this);
131 m_velocityCalculator = new AxisVelocityCalculator(this);
132+
133+ connect(this, &QQuickItem::enabledChanged, this, &DirectionalDragArea::onEnabledChanged);
132}
134}
133
135
134Direction::Type DirectionalDragArea::direction() const
136Direction::Type DirectionalDragArea::direction() const
@@ -528,6 +530,13 @@ void DirectionalDragArea::checkSpeed()
528 m_numSamplesOnLastSpeedCheck = m_velocityCalculator->numSamples();
530 m_numSamplesOnLastSpeedCheck = m_velocityCalculator->numSamples();
529}
531}
530
532
533+void DirectionalDragArea::onEnabledChanged()
534+{
535+ if (!isEnabled() && m_status != WaitingForTouch) {
536+ setStatus(WaitingForTouch);
537+ }
538+}
539+
531void DirectionalDragArea::setStatus(DirectionalDragArea::Status newStatus)
540void DirectionalDragArea::setStatus(DirectionalDragArea::Status newStatus)
532{
541{
533 if (newStatus == m_status)
542 if (newStatus == m_status)
plugins/Ubuntu/Gestures/DirectionalDragArea.h+1
@@ -218,6 +218,7 @@ protected:
218
218
219private Q_SLOTS:
219private Q_SLOTS:
220 void checkSpeed();
220 void checkSpeed();
221+ void onEnabledChanged();
221
222
222private:
223private:
223 void touchEvent_absent(QTouchEvent *event);
224 void touchEvent_absent(QTouchEvent *event);