diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -54,6 +54,7 @@ Activities ActivitiesStats Config + WidgetsAddons ) find_package(KF5Kirigami2 ${KF5_MIN_VERSION} CONFIG) diff --git a/kcms/fonts/CMakeLists.txt b/kcms/fonts/CMakeLists.txt --- a/kcms/fonts/CMakeLists.txt +++ b/kcms/fonts/CMakeLists.txt @@ -30,6 +30,7 @@ KF5::PlasmaQuick KF5::Declarative KF5::QuickAddons + KF5::WidgetsAddons PW::KWorkspace) if(FONTCONFIG_FOUND) target_link_libraries(kcm_fonts ${FONTCONFIG_LIBRARIES}) diff --git a/kcms/fonts/fonts.h b/kcms/fonts/fonts.h --- a/kcms/fonts/fonts.h +++ b/kcms/fonts/fonts.h @@ -67,6 +67,7 @@ void load() override; void save() override; Q_INVOKABLE void adjustAllFonts(); + Q_INVOKABLE void adjustFont(const QFont &font, const QString &category); Q_SIGNALS: void fontsHaveChanged(); diff --git a/kcms/fonts/fonts.cpp b/kcms/fonts/fonts.cpp --- a/kcms/fonts/fonts.cpp +++ b/kcms/fonts/fonts.cpp @@ -31,7 +31,6 @@ #include #include #include -#include #include #include @@ -42,7 +41,7 @@ #include #include #include -#include +#include #include #include "../krdb/krdb.h" @@ -230,30 +229,43 @@ emit fontsHaveChanged(); } +void KFonts::adjustFont(const QFont &font, const QString &category) +{ + QFont selFont = font; + int ret = KFontChooserDialog::getFont(selFont, KFontChooser::NoDisplayFlags); + + if (ret == QDialog::Accepted) { + if (category == QLatin1String("font")) { + m_settings->setFont(selFont); + } else if (category == QLatin1String("menuFont")) { + m_settings->setMenuFont(selFont); + } else if (category == QLatin1String("toolBarFont")) { + m_settings->setToolBarFont(selFont); + } else if (category == QLatin1String("activeFont")) { + m_settings->setActiveFont(selFont); + } else if (category == QLatin1String("smallestReadableFont")) { + m_settings->setSmallestReadableFont(selFont); + } else if (category == QLatin1String("fixed")) { + m_settings->setFixed(selFont); + } + } +} + void KFonts::adjustAllFonts() { QFont font = m_settings->font(); KFontChooser::FontDiffFlags fontDiffFlags; - int ret = KFontDialog::getFontDiff(font, fontDiffFlags, KFontChooser::NoDisplayFlags); + int ret = KFontChooserDialog::getFontDiff(font, fontDiffFlags, KFontChooser::NoDisplayFlags); + + if (ret == QDialog::Accepted && fontDiffFlags) { + m_settings->setFont(applyFontDiff(m_settings->font(), font, fontDiffFlags)); + m_settings->setMenuFont(applyFontDiff(m_settings->menuFont(), font, fontDiffFlags)); + m_settings->setToolBarFont(applyFontDiff(m_settings->toolBarFont(), font, fontDiffFlags)); + m_settings->setActiveFont(applyFontDiff(m_settings->activeFont(), font, fontDiffFlags)); + m_settings->setSmallestReadableFont(applyFontDiff(m_settings->smallestReadableFont(), font, fontDiffFlags)); - if (ret == KDialog::Accepted && fontDiffFlags) { - if (!m_settings->isImmutable("font")) { - m_settings->setFont(applyFontDiff(m_settings->font(), font, fontDiffFlags)); - } - if (!m_settings->isImmutable("menuFont")) { - m_settings->setMenuFont(applyFontDiff(m_settings->menuFont(), font, fontDiffFlags)); - } - if (!m_settings->isImmutable("toolBarFont")) { - m_settings->setToolBarFont(applyFontDiff(m_settings->toolBarFont(), font, fontDiffFlags)); - } - if (!m_settings->isImmutable("activeFont")) { - m_settings->setActiveFont(applyFontDiff(m_settings->activeFont(), font, fontDiffFlags)); - } - if (!m_settings->isImmutable("smallestReadableFont")) { - m_settings->setSmallestReadableFont(applyFontDiff(m_settings->smallestReadableFont(), font, fontDiffFlags)); - } const QFont adjustedFont = applyFontDiff(m_settings->fixed(), font, fontDiffFlags); - if (QFontInfo(adjustedFont).fixedPitch() && !m_settings->isImmutable("fixed")) { + if (QFontInfo(adjustedFont).fixedPitch()) { m_settings->setFixed(adjustedFont); } } diff --git a/kcms/fonts/package/contents/ui/FontWidget.qml b/kcms/fonts/package/contents/ui/FontWidget.qml --- a/kcms/fonts/package/contents/ui/FontWidget.qml +++ b/kcms/fonts/package/contents/ui/FontWidget.qml @@ -57,11 +57,8 @@ Kirigami.MnemonicData.enabled: false focus: true onClicked: { - fontDialog.adjustAllFonts = false; - fontDialog.currentCategory = root.category - fontDialog.font = root.font; - fontDialog.currentFont = root.font; - fontDialog.open() + fontDialog.adjustAllFonts = false + kcm.adjustFont(root.font, root.category) } QtControls.ToolTip { visible: parent.hovered 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 @@ -266,9 +266,9 @@ property bool adjustAllFonts: false onAccepted: { if (adjustAllFonts) { - kcm.adjustAllFonts(font); + kcm.adjustAllFonts() } else { - kcm.fontsSettings[currentCategory] = font; + kcm.adjustFont(font, currentCategory) } } }