From 532e7e7e81de6340b13a04a6c49cd60d7c0bf746 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 29 Mar 2016 20:48:54 +0300 Subject: [PATCH] Fixed crash when trying to update selected state in HistoryInner while _history/_migrated had pending resize items. --- Telegram/SourceFiles/historywidget.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/historywidget.cpp b/Telegram/SourceFiles/historywidget.cpp index 902fe59c5..0f4017583 100644 --- a/Telegram/SourceFiles/historywidget.cpp +++ b/Telegram/SourceFiles/historywidget.cpp @@ -197,6 +197,16 @@ void HistoryInner::paintEvent(QPaintEvent *e) { if (!App::main()) return; + if ((_history && _history->hasPendingResizedItems()) || (_migrated && _migrated->hasPendingResizedItems())) { + Notify::handlePendingHistoryUpdate(); + if (_history) { + t_assert(!_history->hasPendingResizedItems()); + } + if (_migrated) { + t_assert(!_migrated->hasPendingResizedItems()); + } + } + Painter p(this); QRect r(e->rect()); bool trivial = (rect() == r); @@ -1677,7 +1687,9 @@ void HistoryInner::onTouchSelect() { } void HistoryInner::onUpdateSelected() { - if (!_history) return; + if (!_history || _history->hasPendingResizedItems() || (_migrated && _migrated->hasPendingResizedItems())) { + return; + } QPoint mousePos(mapFromGlobal(_dragPos)); QPoint point(_widget->clampMousePosition(mousePos)); @@ -6286,7 +6298,7 @@ void HistoryWidget::notify_automaticLoadSettingsChangedGif() { } void HistoryWidget::notify_handlePendingHistoryUpdate() { - if (_history && _history->hasPendingResizedItems()) { + if ((_history && _history->hasPendingResizedItems()) || (_migrated && _migrated->hasPendingResizedItems())) { updateListSize(); _list->update(); }