Refresh main message view for inactive accounts.

This commit is contained in:
John Preston 2020-07-02 13:35:07 +04:00
parent 895c65d518
commit f2577265ee
4 changed files with 11 additions and 41 deletions

View file

@ -1279,7 +1279,8 @@ rpl::producer<not_null<ViewElement*>> Session::viewResizeRequest() const {
void Session::requestItemViewRefresh(not_null<HistoryItem*> item) { void Session::requestItemViewRefresh(not_null<HistoryItem*> item) {
if (const auto view = item->mainView()) { if (const auto view = item->mainView()) {
view->setPendingResize(); notifyHistoryChangeDelayed(item->history());
view->refreshInBlock();
} }
_itemViewRefreshRequest.fire_copy(item); _itemViewRefreshRequest.fire_copy(item);
} }

View file

@ -178,10 +178,6 @@ HistoryInner::HistoryInner(
) | rpl::start_with_next( ) | rpl::start_with_next(
[this](auto view) { viewRemoved(view); }, [this](auto view) { viewRemoved(view); },
lifetime()); lifetime());
session().data().itemViewRefreshRequest(
) | rpl::start_with_next(
[this](auto item) { refreshView(item); },
lifetime());
rpl::merge( rpl::merge(
session().data().historyUnloaded(), session().data().historyUnloaded(),
session().data().historyCleared() session().data().historyCleared()
@ -1316,32 +1312,15 @@ void HistoryInner::itemRemoved(not_null<const HistoryItem*> item) {
} }
void HistoryInner::viewRemoved(not_null<const Element*> view) { void HistoryInner::viewRemoved(not_null<const Element*> view) {
if (_dragSelFrom == view) { const auto refresh = [&](auto &saved) {
_dragSelFrom = nullptr; if (saved == view) {
} const auto now = view->data()->mainView();
if (_dragSelTo == view) { saved = (now && now != view) ? now : nullptr;
_dragSelTo = nullptr; }
} };
if (_scrollDateLastItem == view) { refresh(_dragSelFrom);
_scrollDateLastItem = nullptr; refresh(_dragSelTo);
} refresh(_scrollDateLastItem);
}
void HistoryInner::refreshView(not_null<HistoryItem*> item) {
const auto dragSelFrom = (_dragSelFrom && _dragSelFrom->data() == item);
const auto dragSelTo = (_dragSelTo && _dragSelTo->data() == item);
const auto scrollDateLastItem = (_scrollDateLastItem
&& _scrollDateLastItem->data() == item);
item->refreshMainView();
if (dragSelFrom) {
_dragSelFrom = item->mainView();
}
if (dragSelTo) {
_dragSelTo = item->mainView();
}
if (scrollDateLastItem) {
_scrollDateLastItem = item->mainView();
}
} }
void HistoryInner::mouseActionFinish( void HistoryInner::mouseActionFinish(

View file

@ -239,7 +239,6 @@ private:
void itemRemoved(not_null<const HistoryItem*> item); void itemRemoved(not_null<const HistoryItem*> item);
void viewRemoved(not_null<const Element*> view); void viewRemoved(not_null<const Element*> view);
void refreshView(not_null<HistoryItem*> item);
void touchResetSpeed(); void touchResetSpeed();
void touchUpdateSpeed(); void touchUpdateSpeed();

View file

@ -502,15 +502,6 @@ HistoryWidget::HistoryWidget(
} }
}, lifetime()); }, lifetime());
session().data().itemViewRefreshRequest(
) | rpl::start_with_next([=](not_null<HistoryItem*> item) {
// While HistoryInner doesn't own item views we must refresh them
// even if the list is not yet created / was destroyed.
if (!_list) {
item->refreshMainView();
}
}, lifetime());
Core::App().settings().largeEmojiChanges( Core::App().settings().largeEmojiChanges(
) | rpl::start_with_next([=] { ) | rpl::start_with_next([=] {
crl::on_main(this, [=] { crl::on_main(this, [=] {