mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-08-30 14:08:41 +00:00
Fix rare crash in message history resizing.
This commit is contained in:
@@ -5018,6 +5018,8 @@ void HistoryWidget::startItemRevealAnimations() {
|
||||
}
|
||||
|
||||
void HistoryWidget::updateListSize() {
|
||||
Expects(_list != nullptr);
|
||||
|
||||
_list->recountHistoryGeometry();
|
||||
auto washidden = _scroll->isHidden();
|
||||
if (washidden) {
|
||||
@@ -5033,6 +5035,16 @@ void HistoryWidget::updateListSize() {
|
||||
}
|
||||
|
||||
bool HistoryWidget::hasPendingResizedItems() const {
|
||||
if (!_list) {
|
||||
// Based on the crash reports there is a codepath (at least on macOS)
|
||||
// that leads from _list = _scroll->setOwnedWidget(...) right into
|
||||
// the HistoryWidget::paintEvent (by sending fake mouse move events
|
||||
// inside scroll area -> hiding tooltip window -> exposing the main
|
||||
// window -> syncing it backing store synchronously).
|
||||
//
|
||||
// So really we could get here with !_list && (_history != nullptr).
|
||||
return false;
|
||||
}
|
||||
return (_history && _history->hasPendingResizedItems())
|
||||
|| (_migrated && _migrated->hasPendingResizedItems());
|
||||
}
|
||||
|
Reference in New Issue
Block a user