From 80da18a143f1b57751e77f9574212ff60ff14950 Mon Sep 17 00:00:00 2001 From: Vlad Zagorodniy Date: Thu, 15 Nov 2018 19:40:00 +0200 Subject: [PATCH] [decorations] Emit DecorationSettings::fontChanged signal Summary: No one emits DecorationSettings::fontChanged signal, so if you change the window title font, then titlebars might look differently after reboot. Currently, there are two places where we can emit that signal: - in KDecoration library itself; - and in KWin. Because we would need to listen for a Plasma specific D-Bus signal, the latter option is preferable. Surprisingly, KWin's implementation of DecorationSettingsPrivate already reacts to refreshFonts D-Bus signal (even though indirectly), so all what we have to do is get the current window title font in SettingsImpl::readSettings, and if it's different from the previous one, emit DecorationSettings::fontChanged signal. BUG: 400980 FIXED-IN: 5.15.0 Test Plan: * Increased the size of the window title font, titlebars got bigger; * Decreased the font size, titlebars got smaller. Reviewers: #kwin, davidedmundson Reviewed By: #kwin, davidedmundson Subscribers: kwin Tags: #kwin Differential Revision: https://phabricator.kde.org/D16908 --- decorations/settings.cpp | 7 +++++++ decorations/settings.h | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/decorations/settings.cpp b/decorations/settings.cpp index 8c53323786..e604fada21 100644 --- a/decorations/settings.cpp +++ b/decorations/settings.cpp @@ -30,6 +30,8 @@ along with this program. If not, see . #include +#include + namespace KWin { namespace Decoration @@ -183,6 +185,11 @@ void SettingsImpl::readSettings() m_borderSize = size; emit decorationSettings()->borderSizeChanged(m_borderSize); } + const QFont font = QFontDatabase::systemFont(QFontDatabase::TitleFont); + if (font != m_font) { + m_font = font; + emit decorationSettings()->fontChanged(m_font); + } emit decorationSettings()->reconfigured(); } diff --git a/decorations/settings.h b/decorations/settings.h index 632fe366ed..a35be06efa 100644 --- a/decorations/settings.h +++ b/decorations/settings.h @@ -49,6 +49,9 @@ public: QVector< KDecoration2::DecorationButtonType > decorationButtonsRight() const override { return m_rightButtons; } + QFont font() const override { + return m_font; + } private: void readSettings(); @@ -59,6 +62,7 @@ private: QVector< KDecoration2::DecorationButtonType > m_rightButtons; KDecoration2::BorderSize m_borderSize; bool m_closeDoubleClickMenu = false; + QFont m_font; }; } // Decoration } // KWin