aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quicktemplates2/qquickscrollbar.cpp28
-rw-r--r--src/quicktemplates2/qquickscrollbar_p.h3
2 files changed, 27 insertions, 4 deletions
diff --git a/src/quicktemplates2/qquickscrollbar.cpp b/src/quicktemplates2/qquickscrollbar.cpp
index 4c89b330..cc338b65 100644
--- a/src/quicktemplates2/qquickscrollbar.cpp
+++ b/src/quicktemplates2/qquickscrollbar.cpp
@@ -388,6 +388,9 @@ void QQuickScrollBarPrivate::updateHover(const QPointF &pos, std::optional<bool>
QQuickScrollBar::QQuickScrollBar(QQuickItem *parent)
: QQuickControl(*(new QQuickScrollBarPrivate), parent)
{
+ Q_D(QQuickScrollBar);
+ d->decreaseVisual = new QQuickIndicatorButton(this);
+ d->increaseVisual = new QQuickIndicatorButton(this);
setKeepMouseGrab(true);
setAcceptedMouseButtons(Qt::LeftButton);
#if QT_CONFIG(quicktemplates2_multitouch)
@@ -771,16 +774,12 @@ qreal QQuickScrollBar::visualPosition() const
QQuickIndicatorButton *QQuickScrollBar::decreaseVisual()
{
Q_D(QQuickScrollBar);
- if (!d->decreaseVisual)
- d->decreaseVisual = new QQuickIndicatorButton(this);
return d->decreaseVisual;
}
QQuickIndicatorButton *QQuickScrollBar::increaseVisual()
{
Q_D(QQuickScrollBar);
- if (!d->increaseVisual)
- d->increaseVisual = new QQuickIndicatorButton(this);
return d->increaseVisual;
}
@@ -855,6 +854,27 @@ void QQuickScrollBar::hoverLeaveEvent(QHoverEvent *event)
d->updateHover(QPoint(), false); //position is not needed when we force it to unhover
}
+void QQuickScrollBar::classBegin()
+{
+ Q_D(QQuickScrollBar);
+ QQuickControl::classBegin();
+
+ QQmlContext *context = qmlContext(this);
+ if (context) {
+ QQmlEngine::setContextForObject(d->decreaseVisual, context);
+ QQmlEngine::setContextForObject(d->increaseVisual, context);
+ }
+}
+
+void QQuickScrollBar::componentComplete()
+{
+ Q_D(QQuickScrollBar);
+ QQuickIndicatorButtonPrivate::get(d->decreaseVisual)->executeIndicator(true);
+ QQuickIndicatorButtonPrivate::get(d->increaseVisual)->executeIndicator(true);
+
+ QQuickControl::componentComplete();
+}
+
#if QT_CONFIG(accessibility)
void QQuickScrollBar::accessibilityActiveChanged(bool active)
{
diff --git a/src/quicktemplates2/qquickscrollbar_p.h b/src/quicktemplates2/qquickscrollbar_p.h
index b35575b9..b7de290b 100644
--- a/src/quicktemplates2/qquickscrollbar_p.h
+++ b/src/quicktemplates2/qquickscrollbar_p.h
@@ -174,6 +174,9 @@ protected:
void hoverLeaveEvent(QHoverEvent *event) override;
#endif
+ void classBegin() override;
+ void componentComplete() override;
+
#if QT_CONFIG(accessibility)
void accessibilityActiveChanged(bool active) override;
QAccessible::Role accessibleRole() const override;