From 06b0d105dce49653118fe0b1880c2c0e9fb8f0a2 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 8 May 2023 12:03:20 +0200 Subject: [PATCH] Editor: simplify font to display options page connection Operating on saved settings is less error prone and easier to maintain. Change-Id: I92e3a6b52296cddc302ba2e4410edfd243b8ad32 Reviewed-by: hjk --- .../texteditor/displaysettingspage.cpp | 53 +++++-------------- src/plugins/texteditor/fontsettingspage.cpp | 1 - 2 files changed, 13 insertions(+), 41 deletions(-) diff --git a/src/plugins/texteditor/displaysettingspage.cpp b/src/plugins/texteditor/displaysettingspage.cpp index 49927710bba..b94c931ab80 100644 --- a/src/plugins/texteditor/displaysettingspage.cpp +++ b/src/plugins/texteditor/displaysettingspage.cpp @@ -4,6 +4,7 @@ #include "displaysettingspage.h" #include "displaysettings.h" +#include "fontsettings.h" #include "marginsettings.h" #include "texteditorconstants.h" #include "texteditorsettings.h" @@ -50,23 +51,18 @@ public: enableTextWrappingHintLabel = new QLabel(Tr::tr("Set font line spacing " "to 100% to enable text wrapping option.")); - fontSettingsPageLineSpacing = fontSettingsPageLineSpacingLink(); - - if (fontSettingsPageLineSpacing) { - connect(fontSettingsPageLineSpacing, &QSpinBox::valueChanged, - this, [this](const int &value) { - if (value != 100) - enableTextWrapping->setChecked(false); - enableTextWrapping->setEnabled(value == 100); - enableTextWrappingHintLabel->setVisible(value != 100); - }); - - if (fontSettingsPageLineSpacing->value() != 100) + auto updateWrapping = [this] { + const bool normalLineSpacing = TextEditorSettings::fontSettings().relativeLineSpacing() == 100; + if (!normalLineSpacing) enableTextWrapping->setChecked(false); + enableTextWrapping->setEnabled(normalLineSpacing); + enableTextWrappingHintLabel->setVisible(!normalLineSpacing); + }; - enableTextWrapping->setEnabled(fontSettingsPageLineSpacing->value() == 100); - enableTextWrappingHintLabel->setVisible(fontSettingsPageLineSpacing->value() != 100); - } + updateWrapping(); + + connect(TextEditorSettings::instance(), &TextEditorSettings::fontSettingsChanged, + this, updateWrapping); connect(enableTextWrappingHintLabel, &QLabel::linkActivated, [] { Core::ICore::showOptionsDialog(Constants::TEXT_EDITOR_FONT_SETTINGS); } ); @@ -177,8 +173,6 @@ public: void settingsToUI(); void setDisplaySettings(const DisplaySettings &, const MarginSettings &newMarginSettings); - QSpinBox *fontSettingsPageLineSpacingLink(); - DisplaySettingsPagePrivate *m_data = nullptr; QCheckBox *enableTextWrapping; @@ -208,8 +202,6 @@ public: QRadioButton *atMargin; QRadioButton *rightAligned; QRadioButton *betweenLines; - - QSpinBox *fontSettingsPageLineSpacing = nullptr; }; void DisplaySettingsWidget::apply() @@ -226,10 +218,8 @@ void DisplaySettingsWidget::settingsFromUI(DisplaySettings &displaySettings, { displaySettings.m_displayLineNumbers = displayLineNumbers->isChecked(); displaySettings.m_textWrapping = enableTextWrapping->isChecked(); - if (fontSettingsPageLineSpacing) { - if (fontSettingsPageLineSpacing->value() != 100) - displaySettings.m_textWrapping = false; - } + if (TextEditorSettings::fontSettings().relativeLineSpacing() != 100) + displaySettings.m_textWrapping = false; marginSettings.m_showMargin = showWrapColumn->isChecked(); marginSettings.m_tintMarginArea = tintMarginArea->isChecked(); marginSettings.m_useIndenter = useIndenter->isChecked(); @@ -322,23 +312,6 @@ void DisplaySettingsWidget::setDisplaySettings(const DisplaySettings &newDisplay } } - QSpinBox *DisplaySettingsWidget::fontSettingsPageLineSpacingLink() - { - for (const auto &page : Core::IOptionsPage::allOptionsPages()) { - QWidget *widget = page->widget(); - - if (!widget) - continue; - - for (QSpinBox *spinBox : widget->findChildren()) { - if (spinBox->objectName() == QLatin1String("FontSettingsPage.LineSpacingSpinBox")) - return spinBox; - } - } - - return nullptr; - } - DisplaySettingsPage::DisplaySettingsPage() : d(new DisplaySettingsPagePrivate) { diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index 1e9ec7fafba..9802ba19a55 100644 --- a/src/plugins/texteditor/fontsettingspage.cpp +++ b/src/plugins/texteditor/fontsettingspage.cpp @@ -119,7 +119,6 @@ public: m_zoomSpinBox->setValue(m_value.fontZoom()); m_lineSpacingSpinBox = new QSpinBox; - m_lineSpacingSpinBox->setObjectName(QLatin1String("FontSettingsPage.LineSpacingSpinBox")); m_lineSpacingSpinBox->setSuffix(Tr::tr("%")); m_lineSpacingSpinBox->setRange(50, 3000); m_lineSpacingSpinBox->setValue(m_value.relativeLineSpacing());