diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp index 9a73a308e..6aefa45bd 100644 --- a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp @@ -563,10 +563,12 @@ void ListWidget::checkUnreadBarCreation() { if (auto data = _delegate->listMessagesBar(_items); data.bar.element) { _bar = std::move(data.bar); _barText = std::move(data.text); - _bar.element->createUnreadBar(_barText.value()); - const auto i = ranges::find(_items, not_null{ _bar.element }); - Assert(i != end(_items)); - refreshAttachmentsAtIndex(i - begin(_items)); + if (!_bar.hidden) { + _bar.element->createUnreadBar(_barText.value()); + const auto i = ranges::find(_items, not_null{ _bar.element }); + Assert(i != end(_items)); + refreshAttachmentsAtIndex(i - begin(_items)); + } } } } @@ -586,7 +588,7 @@ void ListWidget::restoreScrollState() { return; } if (!_scrollTopState.item) { - if (!_bar.element || !_bar.focus || _scrollInited) { + if (!_bar.element || _bar.hidden || !_bar.focus || _scrollInited) { return; } _scrollInited = true; diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.h b/Telegram/SourceFiles/history/view/history_view_list_widget.h index 82fa9d1eb..19347a70e 100644 --- a/Telegram/SourceFiles/history/view/history_view_list_widget.h +++ b/Telegram/SourceFiles/history/view/history_view_list_widget.h @@ -53,6 +53,7 @@ struct SelectedItem { struct MessagesBar { Element *element = nullptr; + bool hidden = false; bool focus = false; }; diff --git a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp index 77e146697..052e4f9c3 100644 --- a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp +++ b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp @@ -1722,22 +1722,20 @@ MessagesBarData RepliesWidget::listMessagesBar( return {}; } const auto till = _root->computeRepliesInboxReadTillFull(); - if (till < 2) { - return {}; - } + const auto hidden = (till < 2); for (auto i = 0, count = int(elements.size()); i != count; ++i) { const auto item = elements[i]->data(); if (IsServerMsgId(item->id) && item->id > till) { if (item->out() || !item->replyToId()) { readTill(item); } else { - return MessagesBarData{ - // Designated initializers here crash MSVC 16.7.3. - MessagesBar{ + return { + .bar = { .element = elements[i], + .hidden = hidden, .focus = true, }, - tr::lng_unread_bar_some(), + .text = tr::lng_unread_bar_some(), }; } }