From ab8e7897ccac74914d33317532d874e834337fe7 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 8 Mar 2018 16:15:56 +0300 Subject: [PATCH] No search for peers when searching by a hashtag. --- .../SourceFiles/dialogs/dialogs_widget.cpp | 26 ++++++++++++++++--- Telegram/SourceFiles/dialogs/dialogs_widget.h | 1 + 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp index f8aee8a800..7403f3a744 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_widget.cpp @@ -468,6 +468,7 @@ void DialogsWidget::onDraggingScrollTimer() { } bool DialogsWidget::onSearchMessages(bool searchCache) { + auto result = false; auto q = _filter->getLastText().trimmed(); if (q.isEmpty() && !_searchFromUser) { MTP::cancel(base::take(_searchRequest)); @@ -487,7 +488,7 @@ bool DialogsWidget::onSearchMessages(bool searchCache) { : DialogsSearchFromStart, i.value(), 0); - return true; + result = true; } } else if (_searchQuery != q || _searchQueryFrom != _searchFromUser) { _searchQuery = q; @@ -541,14 +542,14 @@ bool DialogsWidget::onSearchMessages(bool searchCache) { } _searchQueries.insert(_searchRequest, _searchQuery); } - if (!_searchInChat && !q.isEmpty()) { + if (searchForPeersRequired(q)) { if (searchCache) { auto i = _peerSearchCache.constFind(q); if (i != _peerSearchCache.cend()) { _peerSearchQuery = q; _peerSearchRequest = 0; peerSearchReceived(i.value(), 0); - return true; + result = true; } } else if (_peerSearchQuery != q) { _peerSearchQuery = q; @@ -561,8 +562,25 @@ bool DialogsWidget::onSearchMessages(bool searchCache) { rpcFail(&DialogsWidget::peopleFailed)); _peerSearchQueries.insert(_peerSearchRequest, _peerSearchQuery); } + } else { + _peerSearchQuery = q; + _peerSearchFull = true; + peerSearchReceived( + MTP_contacts_found( + MTP_vector(0), + MTP_vector(0), + MTP_vector(0), + MTP_vector(0)), + 0); } - return false; + return result; +} + +bool DialogsWidget::searchForPeersRequired(const QString &query) const { + if (_searchInChat || query.isEmpty()) { + return false; + } + return (query[0] != '#'); } void DialogsWidget::onNeedSearchMessages() { diff --git a/Telegram/SourceFiles/dialogs/dialogs_widget.h b/Telegram/SourceFiles/dialogs/dialogs_widget.h index 0822e18dba..66d63aa0d7 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_widget.h +++ b/Telegram/SourceFiles/dialogs/dialogs_widget.h @@ -155,6 +155,7 @@ private: const QVector &dialogs, const QVector &messages); + bool searchForPeersRequired(const QString &query) const; void setSearchInChat(Dialogs::Key chat, UserData *from = nullptr); void showJumpToDate(); void showSearchFrom();