aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickscrollbar.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-10-16 22:26:51 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-10-17 10:04:34 +0000
commit6cb2367f01c1f78d760c1a4d70002cf5a5046396 (patch)
tree5861bd4fc0ac6b6110fe32ea71646794efbf5593 /src/quicktemplates2/qquickscrollbar.cpp
parentbd5e078e5b908dc647b5395f9a772074ce206670 (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/quicktemplates2/qquickscrollbar.cpp')
-rw-r--r--src/quicktemplates2/qquickscrollbar.cpp20
1 files changed, 16 insertions, 4 deletions
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()