From 2b93fe9a307534201b5537f09dd1558bcdf5846c Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Thu, 7 Aug 2025 21:09:12 +0300 Subject: [PATCH] Added simple colorizing of query in found messages from compose search. --- .../controls/history_view_compose_search.cpp | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp b/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp index 478ccdba89..22d3ecba40 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_compose_search.cpp @@ -54,7 +54,9 @@ using SearchRequest = Api::MessagesSearchMerged::Request; class Row final : public PeerListRow { public: - explicit Row(std::unique_ptr fakeRow); + explicit Row( + std::unique_ptr fakeRow, + not_null query); [[nodiscard]] FullMsgId fullId() const; @@ -73,15 +75,17 @@ public: private: const std::unique_ptr _fakeRow; + not_null _query; int _outerWidth = 0; }; -Row::Row(std::unique_ptr fakeRow) +Row::Row(std::unique_ptr fakeRow, not_null query) : PeerListRow( fakeRow->searchInChat().history()->peer, fakeRow->item()->fullId().msg.bare) -, _fakeRow(std::move(fakeRow)) { +, _fakeRow(std::move(fakeRow)) +, _query(query) { } FullMsgId Row::fullId() const { @@ -116,9 +120,11 @@ void Row::elementsPaint( .st = &st::defaultDialogRow, .currentBg = st::dialogsBg, .now = crl::now(), + .searchLowerText = QStringView(*_query), .width = outerWidth, .selected = selected, .paused = p.inactive(), + .search = true, }); } @@ -134,6 +140,7 @@ public: void loadMoreRows() override; void addItems(const MessageIdsList &ids, bool clear); + void setQuery(const QString &query); [[nodiscard]] rpl::producer showItemRequests() const; [[nodiscard]] rpl::producer<> searchMoreRequests() const; @@ -145,6 +152,8 @@ private: rpl::event_stream<> _searchMoreRequests; rpl::event_stream<> _resetScrollRequests; + QString _query; + }; ListController::ListController(not_null history) @@ -201,7 +210,8 @@ void ListController::addItems(const MessageIdsList &ids, bool clear) { std::make_unique( key, item, - [=] { delegate()->peerListUpdateRow(*shared); })); + [=] { delegate()->peerListUpdateRow(*shared); }), + &_query); *shared = row.get(); delegate()->peerListAppendRow(std::move(row)); } @@ -214,6 +224,10 @@ void ListController::addItems(const MessageIdsList &ids, bool clear) { } } +void ListController::setQuery(const QString &query) { + _query = query; +} + struct List { base::unique_qptr container; std::unique_ptr controller; @@ -913,6 +927,9 @@ ComposeSearch::Inner::Inner( search.topMsgId = _topMsgId; _apiSearch.clear(); _apiSearch.search(search); + + _list.controller->addItems({}, true); + _list.controller->setQuery(_apiSearch.request().query); }, _topBar->lifetime()); _topBar->queryChanges(