diff --git a/kcms/fonts/CMakeLists.txt b/kcms/fonts/CMakeLists.txt --- a/kcms/fonts/CMakeLists.txt +++ b/kcms/fonts/CMakeLists.txt @@ -17,7 +17,9 @@ endif() set(klauncher_xml ${KINIT_DBUS_INTERFACES_DIR}/kf5_org.kde.KLauncher.xml) +set(kdegtkconfigd_xml ${KINIT_DBUS_INTERFACES_DIR}/org.kde.gtkConfigd.xml) qt5_add_dbus_interface(kcm_fonts_PART_SRCS ${klauncher_xml} klauncher_iface) +qt5_add_dbus_interface(kcm_fonts_PART_SRCS ${kdegtkconfigd_xml} kdegtkconfigd) add_library(kcm_fonts MODULE ${kcm_fonts_PART_SRCS}) diff --git a/kcms/fonts/fonts.h b/kcms/fonts/fonts.h --- a/kcms/fonts/fonts.h +++ b/kcms/fonts/fonts.h @@ -183,6 +183,7 @@ private: void updateNeedsSave(); + void saveFontToGtkSettings(); QFont applyFontDiff(const QFont &fnt, const QFont &newFont, int fontDiffFlags); QFont m_defaultFont; diff --git a/kcms/fonts/fonts.cpp b/kcms/fonts/fonts.cpp --- a/kcms/fonts/fonts.cpp +++ b/kcms/fonts/fonts.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -45,9 +46,11 @@ #include #include #include +#include #include "../krdb/krdb.h" #include "previewimageprovider.h" +#include "kdegtkconfigd.h" /**** DLL Interface ****/ K_PLUGIN_FACTORY_WITH_JSON(KFontsFactory, "kcm_fonts.json", registerPlugin();) @@ -569,6 +572,8 @@ cg.writeEntry("activeFont", m_windowTitleFont.toString()); cg.sync(); + saveFontToGtkSettings(); + m_defaultFontOriginal = m_defaultFont; m_generalFontOriginal = m_generalFont; m_fixedWidthFontOriginal = m_fixedWidthFont; @@ -602,6 +607,20 @@ setNeedsSave(false); } +void KFonts::saveFontToGtkSettings() +{ + org::kde::gtkConfigd gtkDaemonInterface { + "org.kde.gtkConfigd", + "/KdeGtkConfigd", + QDBusConnection::sessionBus(), + this + }; + QString fontAsGtkConfigString = m_generalFont.family() + " " + + m_generalFont.styleName() + " " + + QString::number(m_generalFont.pointSize()); + gtkDaemonInterface.changeGtkFont(fontAsGtkConfigString); +} + void KFonts::updateNeedsSave() { setNeedsSave(m_defaultFontOriginal != m_defaultFont ||