diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-10-16 22:26:51 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-10-17 10:04:34 +0000 |
commit | 6cb2367f01c1f78d760c1a4d70002cf5a5046396 (patch) | |
tree | 5861bd4fc0ac6b6110fe32ea71646794efbf5593 /src | |
parent | bd5e078e5b908dc647b5395f9a772074ce206670 (diff) |
ScrollBar: keep active while hovered
Improves usability on desktop, when hover is enabled.
Change-Id: Ib67db80e278a9369da73d81946a9001d432376aa
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/quicktemplates2/qquickcontrol.cpp | 5 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcontrol_p.h | 1 | ||||
-rw-r--r-- | src/quicktemplates2/qquickscrollbar.cpp | 20 | ||||
-rw-r--r-- | src/quicktemplates2/qquickscrollbar_p.h | 2 |
4 files changed, 24 insertions, 4 deletions
diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp index 1db532b9..0a0b7fad 100644 --- a/src/quicktemplates2/qquickcontrol.cpp +++ b/src/quicktemplates2/qquickcontrol.cpp @@ -1012,6 +1012,7 @@ void QQuickControl::setHovered(bool hovered) d->hovered = hovered; emit hoveredChanged(); + hoverChange(); } /*! @@ -1288,6 +1289,10 @@ void QQuickControl::fontChange(const QFont &newFont, const QFont &oldFont) Q_UNUSED(oldFont); } +void QQuickControl::hoverChange() +{ +} + void QQuickControl::mirrorChange() { emit mirroredChanged(); diff --git a/src/quicktemplates2/qquickcontrol_p.h b/src/quicktemplates2/qquickcontrol_p.h index 81dd615f..d3064f54 100644 --- a/src/quicktemplates2/qquickcontrol_p.h +++ b/src/quicktemplates2/qquickcontrol_p.h @@ -186,6 +186,7 @@ protected: void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override; virtual void fontChange(const QFont &newFont, const QFont &oldFont); + virtual void hoverChange(); virtual void mirrorChange(); virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding); virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem); diff --git a/src/quicktemplates2/qquickscrollbar.cpp b/src/quicktemplates2/qquickscrollbar.cpp index d81b1bd5..ead17cb8 100644 --- a/src/quicktemplates2/qquickscrollbar.cpp +++ b/src/quicktemplates2/qquickscrollbar.cpp @@ -117,7 +117,7 @@ public: } qreal positionAt(const QPoint &point) const; - + void updateActive(); void resizeContent() override; qreal size; @@ -139,6 +139,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); @@ -286,7 +292,7 @@ void QQuickScrollBar::setPressed(bool pressed) d->pressed = pressed; setAccessibleProperty("pressed", pressed); - setActive(d->pressed || d->moving); + d->updateActive(); emit pressedChanged(); } @@ -375,6 +381,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) { @@ -417,14 +429,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() diff --git a/src/quicktemplates2/qquickscrollbar_p.h b/src/quicktemplates2/qquickscrollbar_p.h index 8feba604..b82e0438 100644 --- a/src/quicktemplates2/qquickscrollbar_p.h +++ b/src/quicktemplates2/qquickscrollbar_p.h @@ -105,6 +105,8 @@ protected: void mouseMoveEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; + void hoverChange() override; + #ifndef QT_NO_ACCESSIBILITY void accessibilityActiveChanged(bool active) override; QAccessible::Role accessibleRole() const override; |