summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-12-07 09:25:02 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-12-07 19:01:57 +0000
commite27f52a09893cf494fc9b93452ed160f2effb94b (patch)
treefe80a632ef3a59388021ee972a0e839392c0d84b
parent90c1107698fdd19f0b2b75923ad08046d7c65966 (diff)
QScroller: Fix crash when multiple scrollers are registered
Ensure the scroller cannot be added multiple times to the list of active scrollers. Patch as contributed on bug report. Amends 8b8e53f7267911c4f406f5c6f54e4a60a0f32112. Change-Id: Ic4e7d3e981f36e330dfd28d468288c5ef4b74a4c Fixes: QTBUG-72244 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-rw-r--r--src/widgets/util/qscroller.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/widgets/util/qscroller.cpp b/src/widgets/util/qscroller.cpp
index e229a885a8..abb203b8cc 100644
--- a/src/widgets/util/qscroller.cpp
+++ b/src/widgets/util/qscroller.cpp
@@ -1725,10 +1725,12 @@ void QScrollerPrivate::setState(QScroller::State newstate)
sendEvent(target, &se);
firstScroll = true;
}
- if (state == QScroller::Dragging || state == QScroller::Scrolling)
- qt_activeScrollers()->push_back(q);
- else
+ if (state == QScroller::Dragging || state == QScroller::Scrolling) {
+ if (!qt_activeScrollers()->contains(q))
+ qt_activeScrollers()->push_back(q);
+ } else {
qt_activeScrollers()->removeOne(q);
+ }
emit q->stateChanged(state);
}