Fix selecting custom palette

For some reason the tool button's palette changes back to the old palette
when applying changes. So it cannot be used to hold the intermediately
selected paletted.
This commit is contained in:
Martchus 2023-06-08 13:26:18 +02:00
parent 958d7bc7c9
commit 3fffbc26e8
1 changed files with 5 additions and 4 deletions

View File

@ -42,7 +42,8 @@ struct QtSettingsData {
QFont font; QFont font;
std::optional<QFont> initialFont; std::optional<QFont> initialFont;
QPalette palette; QPalette palette; // the currently applied palette (only in use if customPalette is true, though)
QPalette selectedPalette; // the intermediately selected palette (chosen in palette editor but not yet applied)
QString widgetStyle; QString widgetStyle;
QString initialWidgetStyle; QString initialWidgetStyle;
QString styleSheetPath; QString styleSheetPath;
@ -390,7 +391,7 @@ bool QtAppearanceOptionPage::apply()
m_settings.customWidgetStyle = !ui()->widgetStyleCheckBox->isChecked(); m_settings.customWidgetStyle = !ui()->widgetStyleCheckBox->isChecked();
m_settings.styleSheetPath = ui()->styleSheetPathSelection->lineEdit()->text(); m_settings.styleSheetPath = ui()->styleSheetPathSelection->lineEdit()->text();
m_settings.customStyleSheet = !ui()->styleSheetCheckBox->isChecked(); m_settings.customStyleSheet = !ui()->styleSheetCheckBox->isChecked();
m_settings.palette = ui()->paletteToolButton->palette(); m_settings.palette = m_settings.selectedPalette;
m_settings.customPalette = !ui()->paletteCheckBox->isChecked(); m_settings.customPalette = !ui()->paletteCheckBox->isChecked();
m_settings.iconTheme m_settings.iconTheme
= ui()->iconThemeComboBox->currentIndex() != -1 ? ui()->iconThemeComboBox->currentData().toString() : ui()->iconThemeComboBox->currentText(); = ui()->iconThemeComboBox->currentIndex() != -1 ? ui()->iconThemeComboBox->currentData().toString() : ui()->iconThemeComboBox->currentText();
@ -407,7 +408,7 @@ void QtAppearanceOptionPage::reset()
ui()->widgetStyleCheckBox->setChecked(!m_settings.customWidgetStyle); ui()->widgetStyleCheckBox->setChecked(!m_settings.customWidgetStyle);
ui()->styleSheetPathSelection->lineEdit()->setText(m_settings.styleSheetPath); ui()->styleSheetPathSelection->lineEdit()->setText(m_settings.styleSheetPath);
ui()->styleSheetCheckBox->setChecked(!m_settings.customStyleSheet); ui()->styleSheetCheckBox->setChecked(!m_settings.customStyleSheet);
ui()->paletteToolButton->setPalette(m_settings.palette); m_settings.selectedPalette = m_settings.palette;
ui()->paletteCheckBox->setChecked(!m_settings.customPalette); ui()->paletteCheckBox->setChecked(!m_settings.customPalette);
int iconThemeIndex = ui()->iconThemeComboBox->findData(m_settings.iconTheme); int iconThemeIndex = ui()->iconThemeComboBox->findData(m_settings.iconTheme);
if (iconThemeIndex != -1) { if (iconThemeIndex != -1) {
@ -445,7 +446,7 @@ QWidget *QtAppearanceOptionPage::setupWidget()
// setup palette selection // setup palette selection
QObject::connect(ui()->paletteToolButton, &QToolButton::clicked, ui()->paletteToolButton, QObject::connect(ui()->paletteToolButton, &QToolButton::clicked, ui()->paletteToolButton,
[this] { ui()->paletteToolButton->setPalette(PaletteEditor::getPalette(this->widget(), ui()->paletteToolButton->palette())); }); [this] { m_settings.selectedPalette = PaletteEditor::getPalette(this->widget(), m_settings.selectedPalette); });
// setup icon theme selection // setup icon theme selection
const auto iconThemes = scanIconThemes(QIcon::themeSearchPaths() << QStringLiteral("/usr/share/icons/")); const auto iconThemes = scanIconThemes(QIcon::themeSearchPaths() << QStringLiteral("/usr/share/icons/"));