diff --git a/kcms/fonts/fontsaasettings.h b/kcms/fonts/fontsaasettings.h --- a/kcms/fonts/fontsaasettings.h +++ b/kcms/fonts/fontsaasettings.h @@ -35,6 +35,7 @@ Q_PROPERTY(int dpi READ dpi WRITE setDpi NOTIFY dpiChanged) Q_PROPERTY(KXftConfig::SubPixel::Type subPixel READ subPixel WRITE setSubPixel NOTIFY subPixelChanged) Q_PROPERTY(KXftConfig::Hint::Style hinting READ hinting WRITE setHinting NOTIFY hintingChanged) + Q_PROPERTY(bool isImmutable READ isImmutable CONSTANT) public: FontsAASettings(QObject *parent = nullptr); @@ -46,6 +47,7 @@ int dpi() const; KXftConfig::SubPixel::Type subPixel() const; KXftConfig::Hint::Style hinting() const; + bool isImmutable() const; void setExclude(bool exclude); void setExcludeFrom(int excludeFrom); @@ -67,6 +69,7 @@ private: FontAASettingsStore *m_fontAASettingsStore; + bool m_isImmutable = false; bool usrSave() override; using NotifySignalType = void (FontsAASettings::*)(); diff --git a/kcms/fonts/fontsaasettings.cpp b/kcms/fonts/fontsaasettings.cpp --- a/kcms/fonts/fontsaasettings.cpp +++ b/kcms/fonts/fontsaasettings.cpp @@ -103,6 +103,11 @@ m_excludeTo = excludeTo; } + bool isImmutable() const + { + return m_isImmutable; + } + bool antiAliasing() const { return m_antiAliasing; @@ -228,6 +233,7 @@ KSharedConfig::Ptr config = KSharedConfig::openConfig("kdeglobals"); KConfigGroup cg(config, "General"); + m_isImmutable = cg.isEntryImmutable("XftAntialias"); const auto aaState = xft.getAntiAliasing(); setAntiAliasing(aaState != KXftConfig::AntiAliasing::Disabled); @@ -238,6 +244,7 @@ private: FontsAASettings *m_settings; + bool m_isImmutable; bool m_antiAliasing; bool m_antiAliasingChanged; KXftConfig::SubPixel::Type m_subPixel; @@ -354,6 +361,11 @@ findItem("hinting")->setProperty(hinting); } +bool FontsAASettings::isImmutable() const +{ + return m_fontAASettingsStore->isImmutable(); +} + bool FontsAASettings::usrSave() { m_fontAASettingsStore->save(); diff --git a/kcms/fonts/package/contents/ui/main.qml b/kcms/fonts/package/contents/ui/main.qml --- a/kcms/fonts/package/contents/ui/main.qml +++ b/kcms/fonts/package/contents/ui/main.qml @@ -112,21 +112,22 @@ Kirigami.FormData.label: i18n("Anti-Aliasing:") text: i18n("Enable") Layout.fillWidth: true + enabled: !kcm.fontsAASettings.isImmutable } QtControls.CheckBox { id: excludeCheckBox checked: kcm.fontsAASettings.exclude onCheckedChanged: kcm.fontsAASettings.exclude = checked; text: i18n("Exclude range from anti-aliasing") Layout.fillWidth: true - enabled: antiAliasingCheckBox.checked + enabled: antiAliasingCheckBox.checked && !kcm.fontsAASettings.isImmutable } RowLayout { id: excludeField Layout.preferredWidth: formLayout.maxImplicitWidth - enabled: antiAliasingCheckBox.checked + enabled: antiAliasingCheckBox.checked && !kcm.fontsAASettings.isImmutable QtControls.SpinBox { id: excludeFromSpinBox stepSize: 1 @@ -142,7 +143,7 @@ Layout.fillWidth: true horizontalAlignment: Text.AlignHCenter text: i18n("to") - enabled: excludeCheckBox.checked + enabled: excludeCheckBox.checked && !kcm.fontsAASettings.isImmutable } QtControls.SpinBox { @@ -152,7 +153,7 @@ textFromValue: function(value, locale) { return i18n("%1 pt", value)} valueFromText: function(text, locale) { return parseInt(text) } editable: true - enabled: excludeCheckBox.checked + enabled: excludeCheckBox.checked && !kcm.fontsAASettings.isImmutable value: kcm.fontsAASettings.excludeTo } Connections { @@ -170,7 +171,7 @@ onCurrentIndexChanged: kcm.subPixelCurrentIndex = currentIndex; model: kcm.subPixelOptionsModel textRole: "display" - enabled: antiAliasingCheckBox.checked + enabled: antiAliasingCheckBox.checked && !kcm.fontsAASettings.isImmutable popup.height: popup.implicitHeight delegate: QtControls.ItemDelegate { id: subPixelDelegate @@ -207,7 +208,7 @@ onCurrentTextChanged: kcm.hintingCurrentIndex = currentIndex; model: kcm.hintingOptionsModel textRole: "display" - enabled: antiAliasingCheckBox.checked + enabled: antiAliasingCheckBox.checked && !kcm.fontsAASettings.isImmutable popup.height: popup.implicitHeight delegate: QtControls.ItemDelegate { id: hintingDelegate @@ -239,6 +240,7 @@ RowLayout { QtControls.CheckBox { id: dpiCheckBox + enabled: !kcm.fontsAASettings.isImmutable checked: kcm.fontsAASettings.dpi !== 0 text: i18n("Force font DPI:") onClicked: kcm.fontsAASettings.dpi = (checked ? dpiSpinBox.value : 0) @@ -248,7 +250,7 @@ id: dpiSpinBox stepSize: 24 editable: true - enabled: dpiCheckBox.checked + enabled: dpiCheckBox.checked && !kcm.fontsAASettings.isImmutable value: kcm.fontsAASettings.dpi !== 0 ? kcm.fontsAASettings.dpi : 96 onValueModified: kcm.fontsAASettings.dpi = value // to: need to divide to stepSize