diff --git a/Telegram/SourceFiles/history/view/history_view_element.cpp b/Telegram/SourceFiles/history/view/history_view_element.cpp index affe7d81f2..7375ff2b2c 100644 --- a/Telegram/SourceFiles/history/view/history_view_element.cpp +++ b/Telegram/SourceFiles/history/view/history_view_element.cpp @@ -1014,10 +1014,10 @@ void Element::destroyUnreadBar() { return; } RemoveComponents(UnreadBar::Bit()); - history()->owner().requestViewResize(this); if (data()->mainView() == this) { recountAttachToPreviousInBlocks(); } + history()->owner().requestViewResize(this); } int Element::displayedDateHeight() const { diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp index 9d32fdff9e..d808544eff 100644 --- a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp @@ -494,6 +494,7 @@ void ListWidget::refreshRows(const Data::MessagesSlice &old) { ) - 1; auto destroyingBarElement = _bar.element; + auto clearingOverElement = _overElement; _resizePending = true; _items.clear(); _items.reserve(_slice.ids.size()); @@ -508,18 +509,26 @@ void ListWidget::refreshRows(const Data::MessagesSlice &old) { if (destroyingBarElement == view) { destroyingBarElement = nullptr; } + if (clearingOverElement == view) { + clearingOverElement = nullptr; + } } } - if (destroyingBarElement) { - destroyingBarElement->destroyUnreadBar(); - _bar = {}; - } for (auto e = end(_items), i = e - addedToEndCount; i != e; ++i) { _itemRevealPending.emplace(*i); } updateAroundPositionFromNearest(nearestIndex); updateItemsGeometry(); + + if (clearingOverElement) { + _overElement = nullptr; + } + if (destroyingBarElement) { + destroyingBarElement->destroyUnreadBar(); + _bar = {}; + } + checkUnreadBarCreation(); restoreScrollState(); if (!_itemsRevealHeight) {