diff --git a/kcms/fonts/fonts.h b/kcms/fonts/fonts.h --- a/kcms/fonts/fonts.h +++ b/kcms/fonts/fonts.h @@ -74,6 +74,7 @@ void hintingCurrentIndexChanged(); void subPixelCurrentIndexChanged(); void aliasingChangeApplied(); + void fontDpiSettingsChanged(); private: QFont applyFontDiff(const QFont &fnt, const QFont &newFont, int fontDiffFlags); diff --git a/kcms/fonts/fonts.cpp b/kcms/fonts/fonts.cpp --- a/kcms/fonts/fonts.cpp +++ b/kcms/fonts/fonts.cpp @@ -225,8 +225,6 @@ KGlobalSettings::self()->emitChange(KGlobalSettings::FontChanged); runRdb(KRdbExportXftSettings | KRdbExportGtkTheme); - - emit fontsHaveChanged(); } void KFonts::adjustFont(const QFont &font, const QString &category) @@ -249,6 +247,7 @@ m_settings->setFixed(selFont); } } + emit fontsHaveChanged(); } void KFonts::adjustAllFonts() 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 @@ -22,14 +22,24 @@ import QtQuick.Layouts 1.1 import QtQuick.Controls 2.0 as QtControls import QtQuick.Dialogs 1.2 as QtDialogs + +// For KCMShell.open() +import org.kde.kquickcontrolsaddons 2.0 import org.kde.kirigami 2.4 as Kirigami import org.kde.kcm 1.1 as KCM KCM.SimpleKCM { id: root KCM.ConfigModule.quickHelp: i18n("This module lets you configure the system fonts.") + property var kscreenAction: Kirigami.Action { + visible: KCMShell.authorize("kcm_kscreen.desktop").length > 0 + text: i18n("Change Display Scaling...") + iconName: "preferences-desktop-display" + onTriggered: KCMShell.open("kcm_kscreen.desktop") + } + ColumnLayout { Kirigami.InlineMessage { @@ -44,6 +54,38 @@ } } + Kirigami.InlineMessage { + id: hugeFontsMessage + Layout.fillWidth: true + showCloseButton: true + text: i18n("Very large fonts may produce odd-looking results. Consider adjusting the global screen scale instead of using a very large font size.") + + Connections { + target: kcm + onFontsHaveChanged: { + if (generalFontWidget.font.pointSize > 14 + || fixedWidthFontWidget.font.pointSize > 14 + || smallFontWidget.font.pointSize > 14 + || toolbarFontWidget.font.pointSize > 14 + || menuFontWidget.font.pointSize > 18) { + hugeFontsMessage.visible = true + } else { + hugeFontsMessage.visible = false + } + } + } + + actions: [ kscreenAction ] + } + + Kirigami.InlineMessage { + id: dpiTwiddledMessage + Layout.fillWidth: true + showCloseButton: true + text: i18n("The recommended way to scale the user interface is using the global screen scaling feature.") + actions: [ kscreenAction ] + } + Kirigami.FormLayout { id: formLayout readonly property int maxImplicitWidth: Math.max(adjustAllFontsButton.implicitWidth, excludeField.implicitWidth, subPixelCombo.implicitWidth, hintingCombo.implicitWidth) @@ -71,24 +113,28 @@ enabled: !kcm.fontsSettings.isImmutable("font") } FontWidget { + id: fixedWidthFontWidget label: i18n("Fixed width:") category: "fixed" font: kcm.fontsSettings.fixed enabled: !kcm.fontsSettings.isImmutable("fixed") } FontWidget { + id: smallFontWidget label: i18n("Small:") category: "smallestReadableFont" font: kcm.fontsSettings.smallestReadableFont enabled: !kcm.fontsSettings.isImmutable("smallestReadableFont") } FontWidget { + id: toolbarFontWidget label: i18n("Toolbar:") category: "toolBarFont" font: kcm.fontsSettings.toolBarFont enabled: !kcm.fontsSettings.isImmutable("toolBarFont") } FontWidget { + id: menuFontWidget label: i18n("Menu:") category: "menuFont" font: kcm.fontsSettings.menuFont @@ -241,7 +287,10 @@ id: dpiCheckBox checked: kcm.fontsAASettings.dpi !== 0 text: i18n("Force font DPI:") - onClicked: kcm.fontsAASettings.dpi = (checked ? dpiSpinBox.value : 0) + onClicked: { + kcm.fontsAASettings.dpi = checked ? dpiSpinBox.value : 0 + dpiTwiddledMessage.visible = checked + } } QtControls.SpinBox {