From 7b837e5138fd998a9871f8f2177a8f4cf89ba18c Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sun, 22 Nov 2020 04:11:52 +0300 Subject: [PATCH] Fixed section scrolling above voice recording lock. --- Telegram/SourceFiles/history/history_widget.cpp | 5 +++++ .../view/controls/history_view_compose_controls.cpp | 4 ++++ .../history/view/controls/history_view_compose_controls.h | 1 + .../view/controls/history_view_voice_record_bar.cpp | 7 +++++++ .../history/view/controls/history_view_voice_record_bar.h | 1 + .../history/view/history_view_replies_section.cpp | 5 +++++ .../history/view/history_view_scheduled_section.cpp | 5 +++++ 7 files changed, 28 insertions(+) diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index f5ec69fa7..b8a243a20 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -815,6 +815,11 @@ void HistoryWidget::initVoiceRecordBar() { updateSendButtonType(); }, lifetime()); + _voiceRecordBar->lockViewportEvents( + ) | rpl::start_with_next([=](not_null e) { + _scroll->viewportEvent(e); + }, lifetime()); + _voiceRecordBar->hideFast(); } diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp index 5f440dc47..76ba6c160 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp @@ -2122,6 +2122,10 @@ rpl::producer ComposeControls::lockShowStarts() const { return _voiceRecordBar->lockShowStarts(); } +rpl::producer> ComposeControls::viewportEvents() const { + return _voiceRecordBar->lockViewportEvents(); +} + bool ComposeControls::isRecording() const { return _voiceRecordBar->isRecording(); } diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h index 4da785239..8ca65f62b 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h @@ -120,6 +120,7 @@ public: [[nodiscard]] rpl::producer> keyEvents() const; [[nodiscard]] rpl::producer inlineResultChosen() const; [[nodiscard]] rpl::producer sendActionUpdates() const; + [[nodiscard]] rpl::producer> viewportEvents() const; using MimeDataHook = Fn data, diff --git a/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp b/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp index c8339467a..143ba1b11 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.cpp @@ -1433,6 +1433,13 @@ rpl::producer VoiceRecordBar::lockShowStarts() const { return _lockShowing.changes(); } +rpl::producer> VoiceRecordBar::lockViewportEvents() const { + return _lock->events( + ) | rpl::filter([=](not_null e) { + return e->type() == QEvent::Wheel; + }); +} + rpl::producer<> VoiceRecordBar::updateSendButtonTypeRequests() const { return _listenChanges.events(); } diff --git a/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.h b/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.h index f976bafb8..bc96898f5 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.h +++ b/Telegram/SourceFiles/history/view/controls/history_view_voice_record_bar.h @@ -59,6 +59,7 @@ public: [[nodiscard]] rpl::producer sendVoiceRequests() const; [[nodiscard]] rpl::producer recordingStateChanges() const; [[nodiscard]] rpl::producer lockShowStarts() const; + [[nodiscard]] rpl::producer> lockViewportEvents() const; [[nodiscard]] rpl::producer<> updateSendButtonTypeRequests() const; void requestToSendWithOptions(Api::SendOptions options); diff --git a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp index 47d6aae4f..1787f399b 100644 --- a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp +++ b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp @@ -531,6 +531,11 @@ void RepliesWidget::setupComposeControls() { updateScrollDownVisibility(); }, lifetime()); + _composeControls->viewportEvents( + ) | rpl::start_with_next([=](not_null e) { + _scroll->viewportEvent(e); + }, lifetime()); + _composeControls->finishAnimating(); } diff --git a/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp b/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp index 723c424c5..484fbd69b 100644 --- a/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp +++ b/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp @@ -266,6 +266,11 @@ void ScheduledWidget::setupComposeControls() { ) | rpl::start_with_next([=] { updateScrollDownVisibility(); }, lifetime()); + + _composeControls->viewportEvents( + ) | rpl::start_with_next([=](not_null e) { + _scroll->viewportEvent(e); + }, lifetime()); } void ScheduledWidget::chooseAttach() {