diff --git a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp index 83f4455b45..6c6c599e2a 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_inner_widget.cpp @@ -216,12 +216,6 @@ InnerWidget::InnerWidget( refresh(); }, lifetime()); - subscribe(Window::Theme::Background(), [=](const Window::Theme::BackgroundUpdate &data) { - if (data.paletteChanged()) { - Layout::clearUnreadBadgesCache(); - } - }); - session().changes().historyUpdates( Data::HistoryUpdate::Flag::IsPinned | Data::HistoryUpdate::Flag::ChatOccupied diff --git a/Telegram/SourceFiles/dialogs/dialogs_layout.cpp b/Telegram/SourceFiles/dialogs/dialogs_layout.cpp index f4d33aeb9a..7d4952f800 100644 --- a/Telegram/SourceFiles/dialogs/dialogs_layout.cpp +++ b/Telegram/SourceFiles/dialogs/dialogs_layout.cpp @@ -516,6 +516,8 @@ struct UnreadBadgeSizeData { }; class UnreadBadgeStyleData : public Data::AbstractStructure { public: + UnreadBadgeStyleData(); + UnreadBadgeSizeData sizes[UnreadBadgeSizesCount]; style::color bg[6] = { st::dialogsUnreadBg, @@ -525,9 +527,24 @@ public: st::dialogsUnreadBgMutedOver, st::dialogsUnreadBgMutedActive }; + rpl::lifetime lifetime; }; Data::GlobalStructurePointer unreadBadgeStyle; +UnreadBadgeStyleData::UnreadBadgeStyleData() { + style::PaletteChanged( + ) | rpl::start_with_next([=] { + for (auto &data : sizes) { + for (auto &left : data.left) { + left = QPixmap(); + } + for (auto &right : data.right) { + right = QPixmap(); + } + } + }, lifetime); +} + void createCircleMask(UnreadBadgeSizeData *data, int size) { if (!data->circle.isNull()) return; @@ -979,18 +996,5 @@ void PaintCollapsedRow( } } -void clearUnreadBadgesCache() { - if (unreadBadgeStyle) { - for (auto &data : unreadBadgeStyle->sizes) { - for (auto &left : data.left) { - left = QPixmap(); - } - for (auto &right : data.right) { - right = QPixmap(); - } - } - } -} - } // namespace Layout } // namespace Dialogs