diff --git a/Telegram/SourceFiles/info/peer_gifts/info_peer_gifts_common.cpp b/Telegram/SourceFiles/info/peer_gifts/info_peer_gifts_common.cpp index 6970cc3a45..5c1c56744a 100644 --- a/Telegram/SourceFiles/info/peer_gifts/info_peer_gifts_common.cpp +++ b/Telegram/SourceFiles/info/peer_gifts/info_peer_gifts_common.cpp @@ -159,6 +159,10 @@ GiftButton::GiftButton( : AbstractButton(parent) , _delegate(delegate) , _lockedTimer([=] { refreshLocked(); }) { + style::PaletteChanged() | rpl::on_next([=] { + _delegate->invalidateCache(); + update(); + }, lifetime()); } GiftButton::~GiftButton() { @@ -1130,6 +1134,11 @@ bool Delegate::amPremium() { return _session->premium(); } +void Delegate::invalidateCache() { + _bg = QImage(); + _badges.clear(); +} + DocumentData *LookupGiftSticker( not_null session, const GiftDescriptor &descriptor) { diff --git a/Telegram/SourceFiles/info/peer_gifts/info_peer_gifts_common.h b/Telegram/SourceFiles/info/peer_gifts/info_peer_gifts_common.h index 655c9810b1..9986e81912 100644 --- a/Telegram/SourceFiles/info/peer_gifts/info_peer_gifts_common.h +++ b/Telegram/SourceFiles/info/peer_gifts/info_peer_gifts_common.h @@ -167,6 +167,7 @@ public: [[nodiscard]] virtual not_null hiddenMark() = 0; [[nodiscard]] virtual QImage cachedBadge(const GiftBadge &badge) = 0; [[nodiscard]] virtual bool amPremium() = 0; + virtual void invalidateCache() = 0; }; class GiftButton final : public Ui::AbstractButton { @@ -272,6 +273,7 @@ public: not_null hiddenMark() override; QImage cachedBadge(const GiftBadge &badge) override; bool amPremium() override; + void invalidateCache() override; private: const not_null _session;