From dc464b271874dd6a01e17c5d0acd02576423e662 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 27 Jan 2023 19:25:47 +0400 Subject: [PATCH] Translate pinned message as well. --- .../SourceFiles/history/history_inner_widget.cpp | 15 +++++++++++++++ .../SourceFiles/history/history_inner_widget.h | 3 +++ Telegram/SourceFiles/history/history_widget.cpp | 2 ++ 3 files changed, 20 insertions(+) diff --git a/Telegram/SourceFiles/history/history_inner_widget.cpp b/Telegram/SourceFiles/history/history_inner_widget.cpp index c212cc7b24..9a94928696 100644 --- a/Telegram/SourceFiles/history/history_inner_widget.cpp +++ b/Telegram/SourceFiles/history/history_inner_widget.cpp @@ -24,6 +24,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "history/view/history_view_context_menu.h" #include "history/view/history_view_quick_action.h" #include "history/view/history_view_emoji_interactions.h" +#include "history/view/history_view_pinned_bar.h" #include "history/history_item_components.h" #include "history/history_item_text.h" #include "ui/chat/chat_style.h" @@ -967,6 +968,9 @@ void HistoryInner::paintEvent(QPaintEvent *e) { auto readTill = (HistoryItem*)nullptr; auto readContents = base::flat_set>(); const auto guard = gsl::finally([&] { + if (const auto item = _pinnedItem.current()) { + _translateTracker->add(item, translatedTo); + } _translateTracker->finishBunch(); if (readTill && _widget->markingMessagesRead()) { session().data().histories().readInboxTill(readTill); @@ -3164,6 +3168,17 @@ void HistoryInner::updateSize() { } } +void HistoryInner::setShownPinnedId( + rpl::producer id) { + _pinnedItem = std::move( + id + ) | rpl::map([=](const HistoryView::PinnedId &id) { + return id.message + ? session().data().message(id.message) + : nullptr; + }); +} + void HistoryInner::enterEventHook(QEnterEvent *e) { mouseActionUpdate(QCursor::pos()); return TWidget::enterEventHook(e); diff --git a/Telegram/SourceFiles/history/history_inner_widget.h b/Telegram/SourceFiles/history/history_inner_widget.h index b81cc20bf6..62b329c168 100644 --- a/Telegram/SourceFiles/history/history_inner_widget.h +++ b/Telegram/SourceFiles/history/history_inner_widget.h @@ -32,6 +32,7 @@ enum class PointState : char; class EmptyPainter; class Element; class TranslateTracker; +struct PinnedId; } // namespace HistoryView namespace HistoryView::Reactions { @@ -116,6 +117,7 @@ public: void checkActivation(); void recountHistoryGeometry(); void updateSize(); + void setShownPinnedId(rpl::producer id); void repaintItem(const HistoryItem *item); void repaintItem(const Element *view); @@ -469,6 +471,7 @@ private: std::unique_ptr _reactionsManager; rpl::variable _reactionsItem; + rpl::variable _pinnedItem; MouseAction _mouseAction = MouseAction::None; TextSelectType _mouseSelectType = TextSelectType::Letters; diff --git a/Telegram/SourceFiles/history/history_widget.cpp b/Telegram/SourceFiles/history/history_widget.cpp index c32370de84..b231f74ab0 100644 --- a/Telegram/SourceFiles/history/history_widget.cpp +++ b/Telegram/SourceFiles/history/history_widget.cpp @@ -6287,6 +6287,8 @@ void HistoryWidget::setupPinnedTracker() { Expects(_history != nullptr); _pinnedTracker = std::make_unique(_history); + _list->setShownPinnedId(_pinnedTracker->shownMessageId()); + _pinnedBar = nullptr; checkPinnedBarState(); }