From 26bb95331b4cda149c862770f9a92339dfc8dd1b Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 26 Oct 2022 15:02:54 +0200 Subject: [PATCH] Editor: fix FontSettings::lineSpacing for zoomed fonts Change-Id: Ia7ad3a877c56fb9cd962592b6d3e967beb9002dc Reviewed-by: Reviewed-by: Christian Stenger --- src/plugins/texteditor/fontsettings.cpp | 22 +++++++--------------- src/plugins/texteditor/fontsettings.h | 1 - 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/src/plugins/texteditor/fontsettings.cpp b/src/plugins/texteditor/fontsettings.cpp index f8f2f3db198..887398ad249 100644 --- a/src/plugins/texteditor/fontsettings.cpp +++ b/src/plugins/texteditor/fontsettings.cpp @@ -39,8 +39,7 @@ FontSettings::FontSettings() : m_fontSize(defaultFontSize()), m_fontZoom(100), m_lineSpacing(100), - m_antialias(DEFAULT_ANTIALIAS), - m_lineSpacingCache(0) + m_antialias(DEFAULT_ANTIALIAS) { } @@ -261,7 +260,6 @@ void FontSettings::clearCaches() { m_formatCache.clear(); m_textCharFormatCache.clear(); - m_lineSpacingCache = 0; } QTextCharFormat FontSettings::toTextCharFormat(TextStyles textStyles) const @@ -337,17 +335,12 @@ void FontSettings::setFontZoom(int zoom) qreal FontSettings::lineSpacing() const { - if (m_lineSpacing == 100) { - QFontMetricsF fm(font()); - return fm.lineSpacing(); - } - - if (qFuzzyIsNull(m_lineSpacingCache)) { - auto currentFont = font(); - currentFont.setPointSize(m_fontSize * m_fontZoom / 100); - m_lineSpacingCache = QFontMetricsF(currentFont).lineSpacing() / 100 * m_lineSpacing; - } - return m_lineSpacingCache; + QFont currentFont = font(); + currentFont.setPointSize(m_fontSize * m_fontZoom / 100); + qreal spacing = QFontMetricsF(currentFont).lineSpacing(); + if (m_lineSpacing != 100) + spacing *= 100 / m_lineSpacing; + return spacing; } int FontSettings::relativeLineSpacing() const @@ -358,7 +351,6 @@ int FontSettings::relativeLineSpacing() const void FontSettings::setRelativeLineSpacing(int relativeLineSpacing) { m_lineSpacing = relativeLineSpacing; - m_lineSpacingCache = 0; } QFont FontSettings::font() const diff --git a/src/plugins/texteditor/fontsettings.h b/src/plugins/texteditor/fontsettings.h index e164664baa1..344a3548f2e 100644 --- a/src/plugins/texteditor/fontsettings.h +++ b/src/plugins/texteditor/fontsettings.h @@ -99,7 +99,6 @@ private: ColorScheme m_scheme; mutable QHash m_formatCache; mutable QHash m_textCharFormatCache; - mutable qreal m_lineSpacingCache; }; } // namespace TextEditor