mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-18 07:07:08 +02:00
Added ability to unload not visible GIFs as heavy parts in overview.
This commit is contained in:
parent
039ffd3d34
commit
a153059b38
5 changed files with 22 additions and 1 deletions
Telegram/SourceFiles
|
@ -934,6 +934,15 @@ void ListWidget::unregisterHeavyItem(not_null<const BaseLayout*> item) {
|
|||
}
|
||||
}
|
||||
|
||||
bool ListWidget::itemVisible(not_null<const BaseLayout*> item) {
|
||||
if (const auto &found = findItemById(GetUniversalId(item))) {
|
||||
const auto geometry = found->geometry;
|
||||
return (geometry.top() < _visibleBottom)
|
||||
&& (geometry.top() + geometry.height() > _visibleTop);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void ListWidget::openPhoto(not_null<PhotoData*> photo, FullMsgId id) {
|
||||
_controller->parentController()->openPhoto(photo, id);
|
||||
}
|
||||
|
|
|
@ -80,6 +80,7 @@ public:
|
|||
void registerHeavyItem(not_null<const BaseLayout*> item) override;
|
||||
void unregisterHeavyItem(not_null<const BaseLayout*> item) override;
|
||||
void repaintItem(not_null<const BaseLayout*> item) override;
|
||||
bool itemVisible(not_null<const BaseLayout*> item) override;
|
||||
|
||||
void openPhoto(not_null<PhotoData*> photo, FullMsgId id) override;
|
||||
void openDocument(
|
||||
|
|
|
@ -1895,7 +1895,8 @@ void Gif::clipCallback(Media::Clip::Notification notification) {
|
|||
height,
|
||||
ImageRoundRadius::None, RectPart::None);
|
||||
}
|
||||
} else if (_gif->autoPausedGif()/* && !context()->inlineItemVisible(this)*/) {
|
||||
} else if (_gif->autoPausedGif()
|
||||
&& !delegate()->itemVisible(this)) {
|
||||
clearHeavyPart();
|
||||
}
|
||||
}
|
||||
|
@ -2057,9 +2058,17 @@ void Gif::ensureDataMediaCreated() const {
|
|||
}
|
||||
|
||||
void Gif::clearHeavyPart() {
|
||||
_gif.reset();
|
||||
_dataMedia = nullptr;
|
||||
}
|
||||
|
||||
void Gif::setPosition(int32 position) {
|
||||
ItemBase::setPosition(position);
|
||||
if (position < 0) {
|
||||
_gif.reset();
|
||||
}
|
||||
}
|
||||
|
||||
float64 Gif::dataProgress() const {
|
||||
ensureDataMediaCreated();
|
||||
return _dataMedia->progress();
|
||||
|
|
|
@ -225,6 +225,7 @@ public:
|
|||
StateRequest request) const override;
|
||||
|
||||
void clearHeavyPart() override;
|
||||
void setPosition(int32 position);
|
||||
|
||||
protected:
|
||||
float64 dataProgress() const override;
|
||||
|
|
|
@ -17,6 +17,7 @@ public:
|
|||
virtual void registerHeavyItem(not_null<const ItemBase*> item) = 0;
|
||||
virtual void unregisterHeavyItem(not_null<const ItemBase*> item) = 0;
|
||||
virtual void repaintItem(not_null<const ItemBase*> item) = 0;
|
||||
virtual bool itemVisible(not_null<const ItemBase*> item) = 0;
|
||||
|
||||
virtual void openPhoto(not_null<PhotoData*> photo, FullMsgId id) = 0;
|
||||
virtual void openDocument(
|
||||
|
|
Loading…
Add table
Reference in a new issue