From f04d959ef49cbf079625232797e48639a5548dd2 Mon Sep 17 00:00:00 2001 From: Martchus Date: Fri, 26 Apr 2024 20:26:55 +0200 Subject: [PATCH] Preserve size when selecting a status icon color preset It is probably not the expected behavior that selecting a preset also reverts the rendering resolution to the default value. --- syncthingwidgets/settings/settingsdialog.cpp | 15 ++++++++++----- syncthingwidgets/settings/settingsdialog.h | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/syncthingwidgets/settings/settingsdialog.cpp b/syncthingwidgets/settings/settingsdialog.cpp index 5d08556..8cd7f04 100644 --- a/syncthingwidgets/settings/settingsdialog.cpp +++ b/syncthingwidgets/settings/settingsdialog.cpp @@ -708,17 +708,17 @@ QWidget *IconsOptionPage::setupWidget() auto *const presetsMenu = new QMenu(widget); presetsMenu->addAction(QCoreApplication::translate("QtGui::IconsOptionPageBase", "Colorful background with gradient (default)"), widget, [this] { m_settings = Data::StatusIconSettings(); - update(); + update(true); }); presetsMenu->addAction( QCoreApplication::translate("QtGui::IconsOptionPageBase", "Transparent background and dark foreground (for bright themes)"), widget, [this] { m_settings = Data::StatusIconSettings(Data::StatusIconSettings::BrightTheme{}); - update(); + update(true); }); presetsMenu->addAction( QCoreApplication::translate("QtGui::IconsOptionPageBase", "Transparent background and bright foreground (for dark themes)"), widget, [this] { m_settings = Data::StatusIconSettings(Data::StatusIconSettings::DarkTheme{}); - update(); + update(true); }); // setup additional buttons @@ -763,9 +763,14 @@ bool IconsOptionPage::apply() return true; } -void IconsOptionPage::update() +void IconsOptionPage::update(bool preserveSize) { - ui()->renderingSizeSlider->setValue(std::max(m_settings.renderSize.width(), m_settings.renderSize.height())); + if (preserveSize) { + const auto size = ui()->renderingSizeSlider->value(); + m_settings.renderSize = QSize(size, size); + } else { + ui()->renderingSizeSlider->setValue(std::max(m_settings.renderSize.width(), m_settings.renderSize.height())); + } ui()->thickStrokeWidthCheckBox->setChecked(m_settings.strokeWidth == StatusIconStrokeWidth::Thick); for (auto &widgetsForColor : m_widgets) { widgetsForColor.colorButtons[0]->setColor(widgetsForColor.setting->backgroundStart); diff --git a/syncthingwidgets/settings/settingsdialog.h b/syncthingwidgets/settings/settingsdialog.h index 89a3196..a3e5011 100644 --- a/syncthingwidgets/settings/settingsdialog.h +++ b/syncthingwidgets/settings/settingsdialog.h @@ -96,7 +96,7 @@ enum class Context { Combined, UI, System }; explicit IconsOptionPage(Context context = Context::Combined, QWidget *parentWidget = nullptr); DECLARE_SETUP_WIDGETS private: -void update(); +void update(bool preserveSize = false); Context m_context; Data::StatusIconSettings m_settings; struct {