diff --git a/kcms/fonts/fontsaasettings.h b/kcms/fonts/fontsaasettings.h --- a/kcms/fonts/fontsaasettings.h +++ b/kcms/fonts/fontsaasettings.h @@ -50,9 +50,9 @@ void setExclude(bool exclude); void setExcludeFrom(int excludeFrom); void setExcludeTo(int excludeTo); - void setAntiAliasing(bool antiAliasing); + void setAntiAliasing(bool enabled); void setDpi(int dpi); - void setSubPixel(KXftConfig::SubPixel::Type subPixel); + void setSubPixel(KXftConfig::SubPixel::Type type); void setHinting(KXftConfig::Hint::Style hinting); signals: diff --git a/kcms/fonts/fontsaasettings.cpp b/kcms/fonts/fontsaasettings.cpp --- a/kcms/fonts/fontsaasettings.cpp +++ b/kcms/fonts/fontsaasettings.cpp @@ -44,12 +44,12 @@ return true; } - int defaultSubPixel() + KXftConfig::SubPixel::Type defaultSubPixel() { return KXftConfig::SubPixel::Rgb; } - int defaultHinting() + KXftConfig::Hint::Style defaultHinting() { return KXftConfig::Hint::Slight; } @@ -80,7 +80,9 @@ void setExclude(bool exclude) { - m_exclude = exclude; + if (m_exclude != exclude) { + m_exclude = exclude; + } } int excludeFrom() const @@ -90,7 +92,9 @@ void setExcludeFrom(int excludeFrom) { - m_excludeFrom = excludeFrom; + if (m_excludeFrom != excludeFrom) { + m_excludeFrom = excludeFrom; + } } int excludeTo() const @@ -100,7 +104,9 @@ void setExcludeTo(int excludeTo) { - m_excludeTo = excludeTo; + if (m_excludeTo != excludeTo) { + m_excludeTo = excludeTo; + } } bool antiAliasing() const @@ -112,8 +118,8 @@ { if (antiAliasing != m_antiAliasing) { m_antiAliasingChanged = true; + m_antiAliasing = antiAliasing; } - m_antiAliasing = antiAliasing; } KXftConfig::SubPixel::Type subPixel() const @@ -123,7 +129,10 @@ void setSubPixel(KXftConfig::SubPixel::Type subPixel) { - m_subPixel = subPixel; + if (m_subPixel != subPixel) { + m_subPixelChanged = true; + m_subPixel = subPixel; + } } KXftConfig::Hint::Style hinting() const @@ -133,7 +142,10 @@ void setHinting(KXftConfig::Hint::Style hinting) { - m_hinting = hinting; + if (m_hinting != hinting) { + m_hintingChanged = true; + m_hinting = hinting; + } } void save() @@ -151,35 +163,33 @@ xft.setExcludeRange(0, 0); } - KXftConfig::SubPixel::Type spType = static_cast(m_subPixel); if (m_subPixelChanged || xft.subPixelTypeHasLocalConfig()) { - xft.setSubPixelType(spType); + xft.setSubPixelType(m_subPixel); } else { xft.setSubPixelType(KXftConfig::SubPixel::NotSet); } - KXftConfig::Hint::Style hStyle = static_cast(m_hinting); if (m_hintingChanged || xft.hintStyleHasLocalConfig()) { - xft.setHintStyle(hStyle); + xft.setHintStyle(m_hinting); } else { xft.setHintStyle(KXftConfig::Hint::NotSet); } // Write to KConfig to sync with krdb KSharedConfig::Ptr config = KSharedConfig::openConfig("kdeglobals"); KConfigGroup grp(config, "General"); - grp.writeEntry("XftSubPixel", KXftConfig::toStr(spType)); + grp.writeEntry("XftSubPixel", KXftConfig::toStr(m_subPixel)); if (aaState == KXftConfig::AntiAliasing::NotSet) { grp.revertToDefault("XftAntialias"); } else { grp.writeEntry("XftAntialias", aaState == KXftConfig::AntiAliasing::Enabled); } - QString hs(KXftConfig::toStr(hStyle)); + QString hs(KXftConfig::toStr(m_hinting)); if (hs != grp.readEntry("XftHintStyle")) { - if (KXftConfig::Hint::NotSet == hStyle) { + if (KXftConfig::Hint::NotSet == m_hinting) { grp.revertToDefault("XftHintStyle"); } else { grp.writeEntry("XftHintStyle", hs); @@ -307,9 +317,18 @@ return findItem("antiAliasing")->property().toBool(); } -void FontsAASettings::setAntiAliasing(bool antiAliasing) +void FontsAASettings::setAntiAliasing(bool enabled) { - findItem("antiAliasing")->setProperty(antiAliasing); + if (antiAliasing() == enabled) { + return; + } + + findItem("antiAliasing")->setProperty(enabled); + if (!enabled) { + setSubPixel(KXftConfig::SubPixel::None); + } else if (subPixel() == KXftConfig::SubPixel::None) { + setSubPixel(defaultSubPixel()); + } } int FontsAASettings::dpi() const @@ -339,9 +358,16 @@ return findItem("subPixel")->property().value(); } -void FontsAASettings::setSubPixel(KXftConfig::SubPixel::Type subPixel) +void FontsAASettings::setSubPixel(KXftConfig::SubPixel::Type type) { - findItem("subPixel")->setProperty(subPixel); + if (subPixel() == type) { + return; + } + + findItem("subPixel")->setProperty(type); + if (type == KXftConfig::SubPixel::None) { + setAntiAliasing(false); + } } KXftConfig::Hint::Style FontsAASettings::hinting() const