mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-03 21:54:05 +02:00
Improve search-in-topic closing.
This commit is contained in:
parent
5d76415a5d
commit
850746b0ba
3 changed files with 31 additions and 16 deletions
|
@ -416,9 +416,8 @@ void Widget::chosenRow(const ChosenRow &row) {
|
|||
&& row.filteredRow;
|
||||
const auto history = row.key.history();
|
||||
if (const auto topic = row.key.topic()) {
|
||||
controller()->showRepliesForMessage(
|
||||
topic->history(),
|
||||
topic->rootId(),
|
||||
controller()->showTopic(
|
||||
topic,
|
||||
row.message.fullId.msg,
|
||||
Window::SectionShow::Way::ClearStack);
|
||||
} else if (history && history->peer->isForum() && !row.message.fullId) {
|
||||
|
@ -2309,32 +2308,34 @@ void Widget::clearSearchField() {
|
|||
}
|
||||
|
||||
bool Widget::cancelSearch() {
|
||||
bool clearing = !currentSearchQuery().isEmpty();
|
||||
auto clearingQuery = !currentSearchQuery().isEmpty();
|
||||
auto clearingInChat = false;
|
||||
cancelSearchRequest();
|
||||
if (!clearing && _searchInChat) {
|
||||
if (!clearingQuery && _searchInChat) {
|
||||
if (controller()->adaptive().isOneColumn()) {
|
||||
if (const auto topic = _searchInChat.topic()) {
|
||||
//controller()->showTopic(topic); // #TODO forum search
|
||||
controller()->showTopic(topic);
|
||||
} else if (const auto peer = _searchInChat.peer()) {
|
||||
controller()->showPeer(peer, ShowAtUnreadMsgId);
|
||||
controller()->showPeerHistory(peer);
|
||||
} else {
|
||||
Unexpected("Empty key in cancelSearch().");
|
||||
}
|
||||
}
|
||||
setSearchInChat(Key());
|
||||
clearing = true;
|
||||
} else if (!clearing
|
||||
clearingInChat = true;
|
||||
}
|
||||
if (!clearingQuery
|
||||
&& _subsectionTopBar
|
||||
&& _subsectionTopBar->toggleSearch(false, anim::type::normal)) {
|
||||
setFocus();
|
||||
return true;
|
||||
clearingInChat = true;
|
||||
}
|
||||
_lastSearchPeer = nullptr;
|
||||
_lastSearchId = _lastSearchMigratedId = 0;
|
||||
_inner->clearFilter();
|
||||
clearSearchField();
|
||||
applyFilterUpdate();
|
||||
return clearing;
|
||||
return clearingQuery || clearingInChat;
|
||||
}
|
||||
|
||||
void Widget::cancelSearchInChat() {
|
||||
|
@ -2345,9 +2346,9 @@ void Widget::cancelSearchInChat() {
|
|||
&& !controller()->selectingPeer()
|
||||
&& currentSearchQuery().trimmed().isEmpty()) {
|
||||
if (const auto topic = _searchInChat.topic()) {
|
||||
// #TODO forum search
|
||||
controller()->showTopic(topic);
|
||||
} else if (const auto peer = _searchInChat.peer()) {
|
||||
Ui::showPeerHistory(peer, ShowAtUnreadMsgId);
|
||||
controller()->showPeerHistory(peer);
|
||||
} else {
|
||||
Unexpected("Empty key in cancelSearchInPeer().");
|
||||
}
|
||||
|
|
|
@ -575,6 +575,17 @@ void SessionNavigation::showPeerInfo(
|
|||
showPeerInfo(_session->data().peer(peerId), params);
|
||||
}
|
||||
|
||||
void SessionNavigation::showTopic(
|
||||
not_null<Data::ForumTopic*> topic,
|
||||
MsgId commentId,
|
||||
const SectionShow ¶ms) {
|
||||
return showRepliesForMessage(
|
||||
topic->history(),
|
||||
topic->rootId(),
|
||||
commentId,
|
||||
params);
|
||||
}
|
||||
|
||||
void SessionNavigation::showPeerInfo(
|
||||
not_null<PeerData*> peer,
|
||||
const SectionShow ¶ms) {
|
||||
|
@ -1539,9 +1550,8 @@ void SessionController::showCalendar(Dialogs::Key chat, QDate requestedDate) {
|
|||
SectionShow::Way::Forward,
|
||||
id);
|
||||
} else if (const auto strongTopic = weakTopic.get()) {
|
||||
strong->showRepliesForMessage(
|
||||
strongTopic->history(),
|
||||
strongTopic->rootId(),
|
||||
strong->showTopic(
|
||||
strongTopic,
|
||||
id,
|
||||
SectionShow::Way::Forward);
|
||||
strong->hideLayer(anim::type::normal);
|
||||
|
|
|
@ -212,6 +212,10 @@ public:
|
|||
MsgId rootId,
|
||||
MsgId commentId = 0,
|
||||
const SectionShow ¶ms = SectionShow());
|
||||
void showTopic(
|
||||
not_null<Data::ForumTopic*> topic,
|
||||
MsgId commentId = 0,
|
||||
const SectionShow ¶ms = SectionShow());
|
||||
|
||||
void showPeerInfo(
|
||||
PeerId peerId,
|
||||
|
|
Loading…
Add table
Reference in a new issue