Fix dark mode in download manager
Some checks are pending
Build check / build (push) Waiting to run
Generate translation template / generate-pot (push) Waiting to run

This commit is contained in:
Crementif 2026-02-09 14:10:19 +01:00
parent 9f58f3a118
commit 3b5c6f5246

View File

@ -142,6 +142,10 @@ wxString wxDownloadManagerList::OnGetItemText(long item, long column) const
wxItemAttr* wxDownloadManagerList::OnGetItemAttr(long item) const wxItemAttr* wxDownloadManagerList::OnGetItemAttr(long item) const
{ {
const auto entry = GetTitleEntry(item); const auto entry = GetTitleEntry(item);
const wxColour bgColour = GetBackgroundColour();
const bool isDarkTheme = wxSystemSettings::GetAppearance().IsDark();
if (entry.has_value()) if (entry.has_value())
{ {
auto& entryData = entry.value(); auto& entryData = entry.value();
@ -149,26 +153,38 @@ wxItemAttr* wxDownloadManagerList::OnGetItemAttr(long item) const
entryData.status == TitleDownloadStatus::Verifying || entryData.status == TitleDownloadStatus::Verifying ||
entryData.status == TitleDownloadStatus::Installing) entryData.status == TitleDownloadStatus::Installing)
{ {
const wxColour kActiveColor{ 0xFFE0E0 }; const wxColour kActiveColor = isDarkTheme ? wxColour(80, 40, 40) : wxColour(0xFFE0E0);
static wxListItemAttr s_error_attr(GetTextColour(), kActiveColor, GetFont()); static wxListItemAttr s_active_attr;
return &s_error_attr; s_active_attr.SetBackgroundColour(kActiveColor);
s_active_attr.SetTextColour(GetTextColour());
s_active_attr.SetFont(GetFont());
return &s_active_attr;
} }
else if (entryData.status == TitleDownloadStatus::Installed && entryData.isPackage) else if (entryData.status == TitleDownloadStatus::Installed && entryData.isPackage)
{ {
const wxColour kActiveColor{ 0xE0FFE0 }; const wxColour kActiveColor = isDarkTheme ? wxColour(40, 80, 40) : wxColour(0xE0FFE0);
static wxListItemAttr s_error_attr(GetTextColour(), kActiveColor, GetFont()); static wxListItemAttr s_installed_attr;
return &s_error_attr; s_installed_attr.SetBackgroundColour(kActiveColor);
s_installed_attr.SetTextColour(GetTextColour());
s_installed_attr.SetFont(GetFont());
return &s_installed_attr;
} }
else if (entryData.status == TitleDownloadStatus::Error) else if (entryData.status == TitleDownloadStatus::Error)
{ {
const wxColour kActiveColor{ 0xCCCCF2 }; const wxColour kActiveColor = isDarkTheme ? wxColour(40, 40, 80) : wxColour(0xCCCCF2);
static wxListItemAttr s_error_attr(GetTextColour(), kActiveColor, GetFont()); static wxListItemAttr s_error_attr;
s_error_attr.SetBackgroundColour(kActiveColor);
s_error_attr.SetTextColour(GetTextColour());
s_error_attr.SetFont(GetFont());
return &s_error_attr; return &s_error_attr;
} }
} }
wxColour bgColourSecondary = wxHelper::CalculateAccentColour(GetBackgroundColour()); wxColour bgColourSecondary = wxHelper::CalculateAccentColour(bgColour);
static wxListItemAttr s_coloured_attr(GetTextColour(), bgColourSecondary, GetFont()); static wxListItemAttr s_coloured_attr;
s_coloured_attr.SetBackgroundColour(bgColourSecondary);
s_coloured_attr.SetTextColour(GetTextColour());
s_coloured_attr.SetFont(GetFont());
return item % 2 == 0 ? nullptr : &s_coloured_attr; return item % 2 == 0 ? nullptr : &s_coloured_attr;
} }