From 920484d540d06c7ff0a3e6f594c56252be8e2c43 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 28 Aug 2024 09:32:39 +0300 Subject: [PATCH] Fixed update of submit way in all opened windows. --- Telegram/SourceFiles/core/core_settings.cpp | 4 ++-- Telegram/SourceFiles/core/core_settings.h | 9 +++++++-- Telegram/SourceFiles/history/history_widget.cpp | 6 ++++++ Telegram/SourceFiles/history/history_widget.h | 4 ++-- .../view/controls/history_view_compose_controls.cpp | 5 +++++ Telegram/SourceFiles/mainwidget.cpp | 4 ---- Telegram/SourceFiles/mainwidget.h | 1 - Telegram/SourceFiles/settings/settings_chat.cpp | 1 - 8 files changed, 22 insertions(+), 12 deletions(-) diff --git a/Telegram/SourceFiles/core/core_settings.cpp b/Telegram/SourceFiles/core/core_settings.cpp index 782f59156..f876ac3c4 100644 --- a/Telegram/SourceFiles/core/core_settings.cpp +++ b/Telegram/SourceFiles/core/core_settings.cpp @@ -258,7 +258,7 @@ QByteArray Settings::serialize() const { } stream << qint32(_sendFilesWay.serialize()) - << qint32(_sendSubmitWay) + << qint32(_sendSubmitWay.current()) << qint32(_includeMutedCounter ? 1 : 0) << qint32(_countUnreadMessages ? 1 : 0) << qint32(1) // legacy exe launch warning @@ -421,7 +421,7 @@ void Settings::addFromSerialized(const QByteArray &serialized) { qint32 soundOverridesCount = 0; base::flat_map soundOverrides; qint32 sendFilesWay = _sendFilesWay.serialize(); - qint32 sendSubmitWay = static_cast(_sendSubmitWay); + qint32 sendSubmitWay = static_cast(_sendSubmitWay.current()); qint32 includeMutedCounter = _includeMutedCounter ? 1 : 0; qint32 countUnreadMessages = _countUnreadMessages ? 1 : 0; std::optional noWarningExtensions; diff --git a/Telegram/SourceFiles/core/core_settings.h b/Telegram/SourceFiles/core/core_settings.h index 73f0f5eb0..06f7475e5 100644 --- a/Telegram/SourceFiles/core/core_settings.h +++ b/Telegram/SourceFiles/core/core_settings.h @@ -388,7 +388,11 @@ public: _sendSubmitWay = value; } [[nodiscard]] Ui::InputSubmitSettings sendSubmitWay() const { - return _sendSubmitWay; + return _sendSubmitWay.current(); + } + [[nodiscard]] auto sendSubmitWayValue() const + -> rpl::producer { + return _sendSubmitWay.value(); } void setSoundOverride(const QString &key, const QString &path) { _soundOverrides.emplace(key, path); @@ -966,7 +970,8 @@ private: Window::Theme::AccentColors _themesAccentColors; bool _lastSeenWarningSeen = false; Ui::SendFilesWay _sendFilesWay = Ui::SendFilesWay(); - Ui::InputSubmitSettings _sendSubmitWay = Ui::InputSubmitSettings(); + rpl::variable _sendSubmitWay + = Ui::InputSubmitSettings(); base::flat_map _soundOverrides; base::flat_set _noWarningExtensions; bool _ipRevealWarning = true; diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index 038590217..d2540c055 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -661,6 +661,12 @@ HistoryWidget::HistoryWidget( updateHistoryGeometry(); }); }, lifetime()); + Core::App().settings().sendSubmitWayValue( + ) | rpl::start_with_next([=] { + crl::on_main(this, [=] { + updateFieldSubmitSettings(); + }); + }, lifetime()); session().data().channelDifferenceTooLong( ) | rpl::filter([=](not_null channel) { diff --git a/Telegram/SourceFiles/history/history_widget.h b/Telegram/SourceFiles/history/history_widget.h index 83b501d30..362dccb79 100644 --- a/Telegram/SourceFiles/history/history_widget.h +++ b/Telegram/SourceFiles/history/history_widget.h @@ -251,8 +251,6 @@ public: void applyCloudDraft(History *history); - void updateFieldSubmitSettings(); - void activate(); void setInnerFocus(); [[nodiscard]] rpl::producer<> cancelRequests() const { @@ -380,6 +378,8 @@ private: void windowIsVisibleChanged(); void saveFieldToHistoryLocalDraft(); + void updateFieldSubmitSettings(); + // Checks if we are too close to the top or to the bottom // in the scroll area and preloads history if needed. void preloadHistoryIfNeeded(); 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 09aa2178e..11ab5d49e 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_controls.cpp @@ -1528,6 +1528,11 @@ void ComposeControls::init() { saveFieldToHistoryLocalDraft(); }, _wrap->lifetime()); + Core::App().settings().sendSubmitWayValue( + ) | rpl::start_with_next([=] { + updateSubmitSettings(); + }, _wrap->lifetime()); + session().attachWebView().attachBotsUpdates( ) | rpl::start_with_next([=] { updateAttachBotsMenu(); diff --git a/Telegram/SourceFiles/mainwidget.cpp b/Telegram/SourceFiles/mainwidget.cpp index 3e01faf4e..c73b70bd6 100644 --- a/Telegram/SourceFiles/mainwidget.cpp +++ b/Telegram/SourceFiles/mainwidget.cpp @@ -1211,10 +1211,6 @@ void MainWidget::clearBotStartToken(PeerData *peer) { } } -void MainWidget::ctrlEnterSubmitUpdated() { - _history->updateFieldSubmitSettings(); -} - void MainWidget::showChooseReportMessages( not_null peer, Ui::ReportReason reason, diff --git a/Telegram/SourceFiles/mainwidget.h b/Telegram/SourceFiles/mainwidget.h index 1b4e1e196..12ef1359c 100644 --- a/Telegram/SourceFiles/mainwidget.h +++ b/Telegram/SourceFiles/mainwidget.h @@ -175,7 +175,6 @@ public: void clearBotStartToken(PeerData *peer); - void ctrlEnterSubmitUpdated(); void setInnerFocus(); bool contentOverlapped(const QRect &globalRect); diff --git a/Telegram/SourceFiles/settings/settings_chat.cpp b/Telegram/SourceFiles/settings/settings_chat.cpp index 3ddc6d8f5..a45a8787a 100644 --- a/Telegram/SourceFiles/settings/settings_chat.cpp +++ b/Telegram/SourceFiles/settings/settings_chat.cpp @@ -875,7 +875,6 @@ void SetupMessages( groupSend->setChangedCallback([=](SendByType value) { Core::App().settings().setSendSubmitWay(value); Core::App().saveSettingsDelayed(); - controller->content()->ctrlEnterSubmitUpdated(); }); Ui::AddSkip(inner, st::settingsCheckboxesSkip);