diff options
Diffstat (limited to 'src/quicktemplates2/qquickscrollbar.cpp')
-rw-r--r-- | src/quicktemplates2/qquickscrollbar.cpp | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/quicktemplates2/qquickscrollbar.cpp b/src/quicktemplates2/qquickscrollbar.cpp index ac786649..f0dd640b 100644 --- a/src/quicktemplates2/qquickscrollbar.cpp +++ b/src/quicktemplates2/qquickscrollbar.cpp @@ -163,6 +163,7 @@ QQuickScrollBarPrivate::QQuickScrollBarPrivate() pressed(false), moving(false), interactive(true), + explicitInteractive(false), orientation(Qt::Vertical), snapMode(QQuickScrollBar::NoSnap), policy(QQuickScrollBar::AsNeeded) @@ -187,6 +188,19 @@ qreal QQuickScrollBarPrivate::positionAt(const QPointF &point) const return (point.y() - q->topPadding()) / q->availableHeight(); } +void QQuickScrollBarPrivate::setInteractive(bool enabled) +{ + Q_Q(QQuickScrollBar); + if (interactive == enabled) + return; + + interactive = enabled; + q->setAcceptedMouseButtons(interactive ? Qt::LeftButton : Qt::NoButton); + if (!interactive) + q->ungrabMouse(); + emit q->interactiveChanged(); +} + void QQuickScrollBarPrivate::updateActive() { Q_Q(QQuickScrollBar); @@ -480,14 +494,15 @@ bool QQuickScrollBar::isInteractive() const void QQuickScrollBar::setInteractive(bool interactive) { Q_D(QQuickScrollBar); - if (d->interactive == interactive) - return; + d->explicitInteractive = true; + d->setInteractive(interactive); +} - d->interactive = interactive; - setAcceptedMouseButtons(interactive ? Qt::LeftButton : Qt::NoButton); - if (!interactive) - ungrabMouse(); - emit interactiveChanged(); +void QQuickScrollBar::resetInteractive() +{ + Q_D(QQuickScrollBar); + d->explicitInteractive = false; + d->setInteractive(true); } /*! |