diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 342199b28..649b144d0 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -797,6 +797,7 @@ void HistoryWidget::initVoiceRecordBar() { data.waveform, data.duration, action); + _voiceRecordBar->clearListenState(); }, lifetime()); _voiceRecordBar->lockShowStarts( 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 98269b845..5f440dc47 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp @@ -1018,6 +1018,10 @@ bool ComposeControls::showRecordButton() const { && !isEditingMessage(); } +void ComposeControls::clearListenState() { + _voiceRecordBar->clearListenState(); +} + void ComposeControls::drawRestrictedWrite(Painter &p, const QString &error) { p.fillRect(_writeRestricted->rect(), st::historyReplyBg); 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 926975cd7..4da785239 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.h @@ -152,6 +152,7 @@ public: void setText(const TextWithTags &text); void clear(); void hidePanelsAnimated(); + void clearListenState(); [[nodiscard]] rpl::producer lockShowStarts() const; [[nodiscard]] bool isLockPresent() const; 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 05226bce0..2c0142c71 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 @@ -1399,7 +1399,6 @@ void VoiceRecordBar::requestToSendWithOptions(Api::SendOptions options) { data->waveform, Duration(data->samples), options }); - hideAnimated(); } } @@ -1416,6 +1415,9 @@ bool VoiceRecordBar::isRecording() const { } void VoiceRecordBar::hideAnimated() { + if (isHidden()) { + return; + } visibilityAnimate(false, [=] { hide(); }); } @@ -1455,6 +1457,12 @@ float64 VoiceRecordBar::activeAnimationRatio() const { return _activeAnimation.value(_inField.current() ? 1. : 0.); } +void VoiceRecordBar::clearListenState() { + if (isListenState()) { + hideAnimated(); + } +} + float64 VoiceRecordBar::showAnimationRatio() const { // There is no reason to set the final value to zero, // because at zero this widget is hidden. 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 59f2d891f..f976bafb8 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 @@ -49,7 +49,9 @@ public: void startRecording(); void finishAnimating(); + void hideAnimated(); void hideFast(); + void clearListenState(); void orderControls(); @@ -102,7 +104,6 @@ private: bool isTypeRecord() const; bool hasDuration() const; - void hideAnimated(); void finish(); void activeAnimate(bool active); diff --git a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp index b8b780501..ea9818aef 100644 --- a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp +++ b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp @@ -890,6 +890,7 @@ void RepliesWidget::sendVoice(ComposeControls::VoiceToSend &&data) { std::move(action)); _composeControls->cancelReplyMessage(); + _composeControls->clearListenState(); finishSending(); } diff --git a/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp b/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp index 8fca948b2..723c424c5 100644 --- a/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp +++ b/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp @@ -573,6 +573,7 @@ void ScheduledWidget::sendVoice( auto action = Api::SendAction(_history); action.options = options; session().api().sendVoiceMessage(bytes, waveform, duration, action); + _composeControls->clearListenState(); } void ScheduledWidget::edit(