diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-12-07 09:25:02 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-12-07 19:01:57 +0000 |
commit | e27f52a09893cf494fc9b93452ed160f2effb94b (patch) | |
tree | fe80a632ef3a59388021ee972a0e839392c0d84b | |
parent | 90c1107698fdd19f0b2b75923ad08046d7c65966 (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.cpp | 8 |
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); } |