diff options
Diffstat (limited to 'src/quicktemplates2/qquickpageindicator.cpp')
-rw-r--r-- | src/quicktemplates2/qquickpageindicator.cpp | 84 |
1 files changed, 48 insertions, 36 deletions
diff --git a/src/quicktemplates2/qquickpageindicator.cpp b/src/quicktemplates2/qquickpageindicator.cpp index b4c9c14c..df720c91 100644 --- a/src/quicktemplates2/qquickpageindicator.cpp +++ b/src/quicktemplates2/qquickpageindicator.cpp @@ -98,11 +98,16 @@ public: { } - QQuickItem *itemAt(const QPoint &pos) const; - void updatePressed(bool pressed, const QPoint &pos = QPoint()); + void handlePress(const QPointF &point) override; + void handleMove(const QPointF &point) override; + void handleRelease(const QPointF &point) override; + void handleUngrab() override; + + QQuickItem *itemAt(const QPointF &pos) const; + void updatePressed(bool pressed, const QPointF &pos = QPointF()); void setContextProperty(QQuickItem *item, const QString &name, const QVariant &value); - void itemChildAdded(QQuickItem *, QQuickItem *child); + void itemChildAdded(QQuickItem *, QQuickItem *child) override; int count; int currentIndex; @@ -111,7 +116,39 @@ public: QQuickItem *pressedItem; }; -QQuickItem *QQuickPageIndicatorPrivate::itemAt(const QPoint &pos) const +void QQuickPageIndicatorPrivate::handlePress(const QPointF &point) +{ + QQuickControlPrivate::handlePress(point); + if (interactive) + updatePressed(true, point); +} + +void QQuickPageIndicatorPrivate::handleMove(const QPointF &point) +{ + QQuickControlPrivate::handleMove(point); + if (interactive) + updatePressed(true, point); +} + +void QQuickPageIndicatorPrivate::handleRelease(const QPointF &point) +{ + Q_Q(QQuickPageIndicator); + QQuickControlPrivate::handleRelease(point); + if (interactive) { + if (pressedItem && contentItem) + q->setCurrentIndex(contentItem->childItems().indexOf(pressedItem)); + updatePressed(false); + } +} + +void QQuickPageIndicatorPrivate::handleUngrab() +{ + QQuickControlPrivate::handleUngrab(); + if (interactive) + updatePressed(false); +} + +QQuickItem *QQuickPageIndicatorPrivate::itemAt(const QPointF &pos) const { Q_Q(const QQuickPageIndicator); if (!contentItem || !q->contains(pos)) @@ -144,7 +181,7 @@ QQuickItem *QQuickPageIndicatorPrivate::itemAt(const QPoint &pos) const return nearest; } -void QQuickPageIndicatorPrivate::updatePressed(bool pressed, const QPoint &pos) +void QQuickPageIndicatorPrivate::updatePressed(bool pressed, const QPointF &pos) { QQuickItem *prevItem = pressedItem; pressedItem = pressed ? itemAt(pos) : nullptr; @@ -298,41 +335,16 @@ void QQuickPageIndicator::contentItemChange(QQuickItem *newItem, QQuickItem *old QQuickItemPrivate::get(newItem)->addItemChangeListener(d, QQuickItemPrivate::Children); } -void QQuickPageIndicator::mousePressEvent(QMouseEvent *event) -{ - Q_D(QQuickPageIndicator); - if (d->interactive) { - d->updatePressed(true, event->pos()); - event->accept(); - } -} - -void QQuickPageIndicator::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(QQuickPageIndicator); - if (d->interactive) { - d->updatePressed(true, event->pos()); - event->accept(); - } -} - -void QQuickPageIndicator::mouseReleaseEvent(QMouseEvent *event) -{ - Q_D(QQuickPageIndicator); - if (d->interactive) { - if (d->pressedItem) - setCurrentIndex(d->contentItem->childItems().indexOf(d->pressedItem)); - d->updatePressed(false); - event->accept(); - } -} - -void QQuickPageIndicator::mouseUngrabEvent() +#if QT_CONFIG(quicktemplates2_multitouch) +void QQuickPageIndicator::touchEvent(QTouchEvent *event) { Q_D(QQuickPageIndicator); if (d->interactive) - d->updatePressed(false); + QQuickControl::touchEvent(event); + else + event->ignore(); // QTBUG-61785 } +#endif #if QT_CONFIG(accessibility) QAccessible::Role QQuickPageIndicator::accessibleRole() const |