2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-09-02 07:25:46 +00:00

Clear hidden animated stickers.

This commit is contained in:
John Preston
2019-05-14 12:50:44 +03:00
parent 236513943c
commit 7ee16ba45c
23 changed files with 233 additions and 130 deletions

View File

@@ -1251,6 +1251,58 @@ void Session::sendHistoryChangeNotifications() {
}
}
void Session::registerHeavyViewPart(not_null<ViewElement*> view) {
_heavyViewParts.emplace(view);
}
void Session::unregisterHeavyViewPart(not_null<ViewElement*> view) {
_heavyViewParts.remove(view);
}
void Session::unloadHeavyViewParts(
not_null<HistoryView::ElementDelegate*> delegate) {
if (_heavyViewParts.empty()) {
return;
}
const auto remove = ranges::count(_heavyViewParts, delegate, [](not_null<ViewElement*> element) {
return element->delegate();
});
if (remove == _heavyViewParts.size()) {
for (const auto view : base::take(_heavyViewParts)) {
view->unloadHeavyPart();
}
} else {
auto remove = std::vector<not_null<ViewElement*>>();
for (const auto view : _heavyViewParts) {
if (view->delegate() == delegate) {
remove.push_back(view);
}
}
for (const auto view : remove) {
view->unloadHeavyPart();
}
}
}
void Session::unloadHeavyViewParts(
not_null<HistoryView::ElementDelegate*> delegate,
int from,
int till) {
if (_heavyViewParts.empty()) {
return;
}
auto remove = std::vector<not_null<ViewElement*>>();
for (const auto view : _heavyViewParts) {
if (view->delegate() == delegate
&& !delegate->elementIntersectsRange(view, from, till)) {
remove.push_back(view);
}
}
for (const auto view : remove) {
view->unloadHeavyPart();
}
}
void Session::removeMegagroupParticipant(
not_null<ChannelData*> channel,
not_null<UserData*> user) {