Editor: fix FontSettings::lineSpacing for zoomed fonts

Change-Id: Ia7ad3a877c56fb9cd962592b6d3e967beb9002dc
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2022-10-26 15:02:54 +02:00
parent e003a02721
commit 26bb95331b
2 changed files with 7 additions and 16 deletions

View File

@@ -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

View File

@@ -99,7 +99,6 @@ private:
ColorScheme m_scheme;
mutable QHash<TextStyle, QTextCharFormat> m_formatCache;
mutable QHash<TextStyles, QTextCharFormat> m_textCharFormatCache;
mutable qreal m_lineSpacingCache;
};
} // namespace TextEditor