Fix unread badge styles on palette changes.

This commit is contained in:
John Preston 2021-04-19 11:14:52 +04:00
parent c242a61e8c
commit 25470cde3c
2 changed files with 17 additions and 19 deletions

View file

@ -216,12 +216,6 @@ InnerWidget::InnerWidget(
refresh(); refresh();
}, lifetime()); }, lifetime());
subscribe(Window::Theme::Background(), [=](const Window::Theme::BackgroundUpdate &data) {
if (data.paletteChanged()) {
Layout::clearUnreadBadgesCache();
}
});
session().changes().historyUpdates( session().changes().historyUpdates(
Data::HistoryUpdate::Flag::IsPinned Data::HistoryUpdate::Flag::IsPinned
| Data::HistoryUpdate::Flag::ChatOccupied | Data::HistoryUpdate::Flag::ChatOccupied

View file

@ -516,6 +516,8 @@ struct UnreadBadgeSizeData {
}; };
class UnreadBadgeStyleData : public Data::AbstractStructure { class UnreadBadgeStyleData : public Data::AbstractStructure {
public: public:
UnreadBadgeStyleData();
UnreadBadgeSizeData sizes[UnreadBadgeSizesCount]; UnreadBadgeSizeData sizes[UnreadBadgeSizesCount];
style::color bg[6] = { style::color bg[6] = {
st::dialogsUnreadBg, st::dialogsUnreadBg,
@ -525,9 +527,24 @@ public:
st::dialogsUnreadBgMutedOver, st::dialogsUnreadBgMutedOver,
st::dialogsUnreadBgMutedActive st::dialogsUnreadBgMutedActive
}; };
rpl::lifetime lifetime;
}; };
Data::GlobalStructurePointer<UnreadBadgeStyleData> unreadBadgeStyle; Data::GlobalStructurePointer<UnreadBadgeStyleData> 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) { void createCircleMask(UnreadBadgeSizeData *data, int size) {
if (!data->circle.isNull()) return; 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 Layout
} // namespace Dialogs } // namespace Dialogs