aboutsummaryrefslogtreecommitdiffstats
path: root/src
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
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')
-rw-r--r--src/quicktemplates2/qquickcontrol.cpp5
-rw-r--r--src/quicktemplates2/qquickcontrol_p.h1
-rw-r--r--src/quicktemplates2/qquickscrollbar.cpp20
-rw-r--r--src/quicktemplates2/qquickscrollbar_p.h2
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;