From 129d3569099e02c790acf1f9cec13e9815b34ca8 Mon Sep 17 00:00:00 2001
From: John Preston <johnprestonmail@gmail.com>
Date: Sat, 4 May 2024 14:36:26 +0400
Subject: [PATCH] Fix scrolling expanded frequent contacts.

---
 Telegram/SourceFiles/dialogs/ui/dialogs_suggestions.cpp | 5 +++++
 Telegram/SourceFiles/dialogs/ui/top_peers_strip.cpp     | 4 ++++
 Telegram/SourceFiles/dialogs/ui/top_peers_strip.h       | 3 +++
 3 files changed, 12 insertions(+)

diff --git a/Telegram/SourceFiles/dialogs/ui/dialogs_suggestions.cpp b/Telegram/SourceFiles/dialogs/ui/dialogs_suggestions.cpp
index 9909fd036..50362e657 100644
--- a/Telegram/SourceFiles/dialogs/ui/dialogs_suggestions.cpp
+++ b/Telegram/SourceFiles/dialogs/ui/dialogs_suggestions.cpp
@@ -970,6 +970,11 @@ void Suggestions::setupChats() {
 		_chatsScroll->scrollToY(request.ymin, request.ymax);
 	}, _topPeers->lifetime());
 
+	_topPeers->verticalScrollEvents(
+	) | rpl::start_with_next([=](not_null<QWheelEvent*> e) {
+		_chatsScroll->viewportEvent(e);
+	}, _topPeers->lifetime());
+
 	_chatsScroll->setVisible(_tab.current() == Tab::Chats);
 }
 
diff --git a/Telegram/SourceFiles/dialogs/ui/top_peers_strip.cpp b/Telegram/SourceFiles/dialogs/ui/top_peers_strip.cpp
index d32d32814..f793da346 100644
--- a/Telegram/SourceFiles/dialogs/ui/top_peers_strip.cpp
+++ b/Telegram/SourceFiles/dialogs/ui/top_peers_strip.cpp
@@ -205,6 +205,10 @@ int TopPeersStrip::resizeGetHeight(int newWidth) {
 	return _strip.y() + _strip.height();
 }
 
+rpl::producer<not_null<QWheelEvent*>> TopPeersStrip::verticalScrollEvents() const {
+	return _verticalScrollEvents.events();
+}
+
 void TopPeersStrip::stripWheelEvent(QWheelEvent *e) {
 	const auto phase = e->phase();
 	const auto fullDelta = e->pixelDelta().isNull()
diff --git a/Telegram/SourceFiles/dialogs/ui/top_peers_strip.h b/Telegram/SourceFiles/dialogs/ui/top_peers_strip.h
index f23b3da11..9894235c6 100644
--- a/Telegram/SourceFiles/dialogs/ui/top_peers_strip.h
+++ b/Telegram/SourceFiles/dialogs/ui/top_peers_strip.h
@@ -62,6 +62,9 @@ public:
 	void deselectByKeyboard();
 	bool chooseRow();
 
+	[[nodiscard]] auto verticalScrollEvents() const
+		-> rpl::producer<not_null<QWheelEvent*>>;
+
 private:
 	struct Entry;
 	struct Layout;