fix themes leak

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
(cherry picked from commit 5b12d3cfff9092c0364e455c211fc189d87039cd)
This commit is contained in:
Trial97 2025-03-30 00:46:59 +02:00 committed by github-actions[bot]
parent 1a56396e2e
commit fcc1e80237
2 changed files with 22 additions and 20 deletions

View File

@ -42,16 +42,18 @@
SystemTheme::SystemTheme(const QString& styleName, bool isDefaultTheme)
{
themeName = isDefaultTheme ? "system" : styleName;
widgetTheme = styleName;
colorPalette = QStyleFactory::create(styleName)->standardPalette();
m_themeName = isDefaultTheme ? "system" : styleName;
m_widgetTheme = styleName;
auto style = QStyleFactory::create(styleName);
m_colorPalette = style->standardPalette();
delete style;
}
void SystemTheme::apply(bool initial)
{
// See https://github.com/MultiMC/Launcher/issues/1790
// or https://github.com/PrismLauncher/PrismLauncher/issues/490
if (initial && themeName == "system") {
if (initial && m_themeName == "system") {
QApplication::setStyle(new HintOverrideProxyStyle(QStyleFactory::create(qtTheme())));
return;
}
@ -61,35 +63,35 @@ void SystemTheme::apply(bool initial)
QString SystemTheme::id()
{
return themeName;
return m_themeName;
}
QString SystemTheme::name()
{
if (themeName.toLower() == "windowsvista") {
if (m_themeName.toLower() == "windowsvista") {
return QObject::tr("Windows Vista");
} else if (themeName.toLower() == "windows") {
} else if (m_themeName.toLower() == "windows") {
return QObject::tr("Windows 9x");
} else if (themeName.toLower() == "windows11") {
} else if (m_themeName.toLower() == "windows11") {
return QObject::tr("Windows 11");
} else if (themeName.toLower() == "system") {
} else if (m_themeName.toLower() == "system") {
return QObject::tr("System");
} else {
return themeName;
return m_themeName;
}
}
QString SystemTheme::tooltip()
{
if (themeName.toLower() == "windowsvista") {
if (m_themeName.toLower() == "windowsvista") {
return QObject::tr("Widget style trying to look like your win32 theme");
} else if (themeName.toLower() == "windows") {
} else if (m_themeName.toLower() == "windows") {
return QObject::tr("Windows 9x inspired widget style");
} else if (themeName.toLower() == "windows11") {
} else if (m_themeName.toLower() == "windows11") {
return QObject::tr("WinUI 3 inspired Qt widget style");
} else if (themeName.toLower() == "fusion") {
} else if (m_themeName.toLower() == "fusion") {
return QObject::tr("The default Qt widget style");
} else if (themeName.toLower() == "system") {
} else if (m_themeName.toLower() == "system") {
return QObject::tr("Your current system theme");
} else {
return "";
@ -98,12 +100,12 @@ QString SystemTheme::tooltip()
QString SystemTheme::qtTheme()
{
return widgetTheme;
return m_widgetTheme;
}
QPalette SystemTheme::colorScheme()
{
return colorPalette;
return m_colorPalette;
}
QString SystemTheme::appStyleSheet()

View File

@ -53,7 +53,7 @@ class SystemTheme : public ITheme {
QColor fadeColor() override;
private:
QPalette colorPalette;
QString widgetTheme;
QString themeName;
QPalette m_colorPalette;
QString m_widgetTheme;
QString m_themeName;
};