Fix bot chat scroll shift on state restore.

Fixes #28085.
This commit is contained in:
John Preston 2025-02-05 14:18:05 +04:00
parent 7f6e871b26
commit 8596b0309e
3 changed files with 4 additions and 4 deletions

View file

@ -3275,7 +3275,7 @@ void HistoryInner::checkActivation() {
session().data().histories().readInboxTill(view->data()); session().data().histories().readInboxTill(view->data());
} }
void HistoryInner::recountHistoryGeometry() { void HistoryInner::recountHistoryGeometry(bool initial) {
_contentWidth = _scroll->width(); _contentWidth = _scroll->width();
if (_history->hasPendingResizedItems() if (_history->hasPendingResizedItems()
@ -3333,7 +3333,7 @@ void HistoryInner::recountHistoryGeometry() {
} }
auto historyPaddingTopDelta = (newHistoryPaddingTop - oldHistoryPaddingTop); auto historyPaddingTopDelta = (newHistoryPaddingTop - oldHistoryPaddingTop);
if (historyPaddingTopDelta != 0) { if (!initial && historyPaddingTopDelta != 0) {
if (_history->scrollTopItem) { if (_history->scrollTopItem) {
_history->scrollTopOffset += historyPaddingTopDelta; _history->scrollTopOffset += historyPaddingTopDelta;
} else if (_migrated && _migrated->scrollTopItem) { } else if (_migrated && _migrated->scrollTopItem) {

View file

@ -121,7 +121,7 @@ public:
void setItemsRevealHeight(int revealHeight); void setItemsRevealHeight(int revealHeight);
void changeItemsRevealHeight(int revealHeight); void changeItemsRevealHeight(int revealHeight);
void checkActivation(); void checkActivation();
void recountHistoryGeometry(); void recountHistoryGeometry(bool initial = false);
void updateSize(); void updateSize();
void setShownPinned(HistoryItem *item); void setShownPinned(HistoryItem *item);

View file

@ -6610,7 +6610,7 @@ void HistoryWidget::startMessageSendingAnimation(
void HistoryWidget::updateListSize() { void HistoryWidget::updateListSize() {
Expects(_list != nullptr); Expects(_list != nullptr);
_list->recountHistoryGeometry(); _list->recountHistoryGeometry(!_historyInited);
auto washidden = _scroll->isHidden(); auto washidden = _scroll->isHidden();
if (washidden) { if (washidden) {
_scroll->show(); _scroll->show();