From 2928c7b4b5244704a053dbf0ba705435036a0b20 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 17 Mar 2023 16:09:23 +0400 Subject: [PATCH] Invalidate chats list online mark on palette change. --- Telegram/SourceFiles/dialogs/dialogs_row.cpp | 10 +++++++--- Telegram/SourceFiles/dialogs/dialogs_row.h | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/dialogs/dialogs_row.cpp b/Telegram/SourceFiles/dialogs/dialogs_row.cpp index b15c657d6..c5145c368 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_row.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_row.cpp @@ -431,15 +431,19 @@ void Row::paintUserpic( auto key = peer->userpicUniqueKey(userpicView()); key.first += peer->messagesTTL(); const auto frameIndex = videoUserpic ? videoUserpic->frameIndex() : -1; - if (_cornerBadgeUserpic->key != key) { + const auto paletteVersion = style::PaletteVersion(); + const auto keyChanged = (_cornerBadgeUserpic->key != key) + || (_cornerBadgeUserpic->paletteVersion != paletteVersion); + if (keyChanged) { _cornerBadgeUserpic->cacheTTL = QImage(); } - if (!_cornerBadgeUserpic->layersManager.isFinished() - || _cornerBadgeUserpic->key != key + if (keyChanged + || !_cornerBadgeUserpic->layersManager.isFinished() || _cornerBadgeUserpic->active != context.active || _cornerBadgeUserpic->frameIndex != frameIndex || videoUserpic) { _cornerBadgeUserpic->key = key; + _cornerBadgeUserpic->paletteVersion = paletteVersion; _cornerBadgeUserpic->active = context.active; _cornerBadgeUserpic->frameIndex = frameIndex; _cornerBadgeUserpic->layersManager.markFrameShown(); diff --git a/Telegram/SourceFiles/dialogs/dialogs_row.h b/Telegram/SourceFiles/dialogs/dialogs_row.h index d44667103..d79c2efdf 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_row.h +++ b/Telegram/SourceFiles/dialogs/dialogs_row.h @@ -167,6 +167,7 @@ private: struct CornerBadgeUserpic { InMemoryKey key; CornerLayersManager layersManager; + int paletteVersion = 0; int frameIndex = -1; bool active = false; QImage frame;