diff --git a/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.cpp b/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.cpp index d0cc71ca3..58fd123ea 100644 --- a/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.cpp +++ b/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.cpp @@ -82,9 +82,10 @@ VerticalDrumPicker::VerticalDrumPicker( ) | rpl::start_with_next([=](const QSize &s) { _itemsVisible.count = std::ceil(float64(s.height()) / _itemHeight); _itemsVisible.centerOffset = _itemsVisible.count / 2; - if (_pendingStartIndex && _itemsVisible.count) { - _index = normalizedIndex(base::take(_pendingStartIndex) + if ((_pendingStartIndex >= 0) && _itemsVisible.count) { + _index = normalizedIndex(_pendingStartIndex - _itemsVisible.centerOffset); + _pendingStartIndex = -1; } if (!_loopData.looped) { diff --git a/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.h b/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.h index 802f72fba..4140d3397 100644 --- a/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.h +++ b/Telegram/SourceFiles/ui/widgets/vertical_drum_picker.h @@ -75,7 +75,7 @@ private: PaintItemCallback _paintCallback; - int _pendingStartIndex = 0; + int _pendingStartIndex = -1; struct { int count = 0;