diff options
Diffstat (limited to 'src/quicktemplates2')
-rw-r--r-- | src/quicktemplates2/qquickscrollbar.cpp | 28 | ||||
-rw-r--r-- | src/quicktemplates2/qquickscrollbar_p.h | 3 |
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; |