Fix crash in shared media search message delete.

Fixes #8237.
This commit is contained in:
John Preston 2020-10-06 14:20:49 +03:00
parent cd506dfff5
commit 6ccd53689d

View file

@ -649,36 +649,41 @@ void ListWidget::restart() {
} }
void ListWidget::itemRemoved(not_null<const HistoryItem*> item) { void ListWidget::itemRemoved(not_null<const HistoryItem*> item) {
if (isMyItem(item)) { if (!isMyItem(item)) {
auto id = GetUniversalId(item); return;
auto sectionIt = findSectionByItem(id);
if (sectionIt != _sections.end()) {
if (sectionIt->removeItem(id)) {
auto top = sectionIt->top();
if (sectionIt->empty()) {
_sections.erase(sectionIt);
}
refreshHeight();
}
}
if (isItemLayout(item, _overLayout)) {
_overLayout = nullptr;
}
if (const auto i = _layouts.find(id); i != _layouts.end()) {
_heavyLayouts.remove(i->second.item.get());
_layouts.erase(i);
}
_dragSelected.remove(id);
if (const auto i = _selected.find(id); i != _selected.cend()) {
removeItemSelection(i);
}
mouseActionUpdate(_mousePosition);
} }
auto id = GetUniversalId(item);
auto needHeightRefresh = false;
auto sectionIt = findSectionByItem(id);
if (sectionIt != _sections.end()) {
if (sectionIt->removeItem(id)) {
auto top = sectionIt->top();
if (sectionIt->empty()) {
_sections.erase(sectionIt);
}
needHeightRefresh = true;
}
}
if (isItemLayout(item, _overLayout)) {
_overLayout = nullptr;
}
if (const auto i = _layouts.find(id); i != _layouts.end()) {
_heavyLayouts.remove(i->second.item.get());
_layouts.erase(i);
}
_dragSelected.remove(id);
if (const auto i = _selected.find(id); i != _selected.cend()) {
removeItemSelection(i);
}
if (needHeightRefresh) {
refreshHeight();
}
mouseActionUpdate(_mousePosition);
} }
FullMsgId ListWidget::computeFullId( FullMsgId ListWidget::computeFullId(