diff options
Diffstat (limited to 'src/quicktemplates2/qquickscrollbar.cpp')
-rw-r--r-- | src/quicktemplates2/qquickscrollbar.cpp | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/src/quicktemplates2/qquickscrollbar.cpp b/src/quicktemplates2/qquickscrollbar.cpp index 7ac1df34..8e6db063 100644 --- a/src/quicktemplates2/qquickscrollbar.cpp +++ b/src/quicktemplates2/qquickscrollbar.cpp @@ -168,7 +168,7 @@ public: } qreal positionAt(const QPoint &point) const; - + void updateActive(); void resizeContent() override; qreal size; @@ -190,6 +190,12 @@ qreal QQuickScrollBarPrivate::positionAt(const QPoint &point) const return (point.y() - q->topPadding()) / q->availableHeight(); } +void QQuickScrollBarPrivate::updateActive() +{ + Q_Q(QQuickScrollBar); + q->setActive(moving || pressed || hovered); +} + void QQuickScrollBarPrivate::resizeContent() { Q_Q(QQuickScrollBar); @@ -349,7 +355,7 @@ void QQuickScrollBar::setPressed(bool pressed) d->pressed = pressed; setAccessibleProperty("pressed", pressed); - setActive(d->pressed || d->moving); + d->updateActive(); emit pressedChanged(); } @@ -443,6 +449,12 @@ void QQuickScrollBar::mouseReleaseEvent(QMouseEvent *event) setPressed(false); } +void QQuickScrollBar::hoverChange() +{ + Q_D(QQuickScrollBar); + d->updateActive(); +} + #ifndef QT_NO_ACCESSIBILITY void QQuickScrollBar::accessibilityActiveChanged(bool active) { @@ -473,7 +485,7 @@ public: void layoutHorizontal(bool move = true); void layoutVertical(bool move = true); - void itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) override; + void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override; void itemDestroyed(QQuickItem *item) override; QQuickFlickable *flickable; @@ -485,14 +497,14 @@ void QQuickScrollBarAttachedPrivate::activateHorizontal() { QQuickScrollBarPrivate *p = QQuickScrollBarPrivate::get(horizontal); p->moving = flickable->isMovingHorizontally(); - horizontal->setActive(p->moving || p->pressed); + p->updateActive(); } void QQuickScrollBarAttachedPrivate::activateVertical() { QQuickScrollBarPrivate *p = QQuickScrollBarPrivate::get(vertical); p->moving = flickable->isMovingVertically(); - vertical->setActive(p->moving || p->pressed); + p->updateActive(); } // TODO: QQuickFlickable::maxXYExtent() @@ -548,16 +560,16 @@ void QQuickScrollBarAttachedPrivate::layoutVertical(bool move) vertical->setX(vertical->isMirrored() ? 0 : flickable->width() - vertical->width()); } -void QQuickScrollBarAttachedPrivate::itemGeometryChanged(QQuickItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) +void QQuickScrollBarAttachedPrivate::itemGeometryChanged(QQuickItem *item, const QQuickGeometryChange change, const QRectF &diff) { Q_UNUSED(item); - Q_UNUSED(newGeometry); + Q_UNUSED(change); if (horizontal && horizontal->height() > 0) { - bool move = qFuzzyIsNull(horizontal->y()) || qFuzzyCompare(horizontal->y(), oldGeometry.height() - horizontal->height()); + bool move = qFuzzyIsNull(horizontal->y()) || qFuzzyCompare(horizontal->y(), item->height() - diff.height() - horizontal->height()); layoutHorizontal(move); } if (vertical && vertical->width() > 0) { - bool move = qFuzzyIsNull(vertical->x()) || qFuzzyCompare(vertical->x(), oldGeometry.width() - vertical->width()); + bool move = qFuzzyIsNull(vertical->x()) || qFuzzyCompare(vertical->x(), item->width() - diff.width() - vertical->width()); layoutVertical(move); } } @@ -576,7 +588,7 @@ QQuickScrollBarAttached::QQuickScrollBarAttached(QQuickFlickable *flickable) : Q_D(QQuickScrollBarAttached); if (flickable) { QQuickItemPrivate *p = QQuickItemPrivate::get(flickable); - p->updateOrAddGeometryChangeListener(d, QQuickItemPrivate::SizeChange); + p->updateOrAddGeometryChangeListener(d, QQuickGeometryChange::Size); } } |