diff options
Diffstat (limited to 'src/widgets/widgets/qabstractslider.cpp')
-rw-r--r-- | src/widgets/widgets/qabstractslider.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/widgets/widgets/qabstractslider.cpp b/src/widgets/widgets/qabstractslider.cpp index 8d8c3aa4bc..c2d4d3278f 100644 --- a/src/widgets/widgets/qabstractslider.cpp +++ b/src/widgets/widgets/qabstractslider.cpp @@ -205,7 +205,7 @@ QT_BEGIN_NAMESPACE QAbstractSliderPrivate::QAbstractSliderPrivate() : minimum(0), maximum(99), pageStep(10), value(0), position(0), pressValue(-1), - singleStep(1), offset_accumulated(0), tracking(true), + singleStep(1), singleStepFromItemView(-1), viewMayChangeSingleStep(true), offset_accumulated(0), tracking(true), blocktracking(false), pressed(false), invertedAppearance(false), invertedControls(false), orientation(Qt::Horizontal), repeatAction(QAbstractSlider::SliderNoAction) @@ -378,6 +378,11 @@ int QAbstractSlider::maximum() const void QAbstractSlider::setSingleStep(int step) { Q_D(QAbstractSlider); + + d->viewMayChangeSingleStep = (step < 0); + if (step < 0 && d->singleStepFromItemView > 0) + step = d->singleStepFromItemView; + if (step != d->singleStep) d->setSteps(step, d->pageStep); } @@ -936,4 +941,16 @@ bool QAbstractSlider::event(QEvent *e) return QWidget::event(e); } +// This function is called from itemviews when doing scroll per pixel (on updateGeometries()) +// It will not have any effect if there has been a call to setSingleStep with +// a 'reasonable' value (since viewMayChangeSingleStep will be set to false). +// (If setSingleStep is called with -1 it will however allow the views to change singleStep.) + +void QAbstractSliderPrivate::itemviewChangeSingleStep(int step) +{ + singleStepFromItemView = step; + if (viewMayChangeSingleStep && singleStep != step) + setSteps(step, pageStep); +} + QT_END_NAMESPACE |