Avoid accessing global font settings from syntax highlighters

Change-Id: Ic015f7449351166ec41a7745355ddc63504f6442
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Eike Ziller
2018-09-18 12:46:48 +02:00
parent dd0347d1ee
commit 6ea686faa9
4 changed files with 11 additions and 2 deletions

View File

@@ -569,7 +569,7 @@ void Highlighter::applyFormat(int offset,
// think this approach would fit better. If there are other ideas...
QBrush bg = format.background();
if (bg.style() == Qt::NoBrush)
bg = TextEditorSettings::fontSettings().toTextCharFormat(C_TEXT).background();
bg = fontSettings().toTextCharFormat(C_TEXT).background();
if (itemData->color().isValid() && isReadableOn(bg.color(), itemData->color()))
format.setForeground(itemData->color());
if (itemData->isItalicSpecified())

View File

@@ -66,6 +66,7 @@ public:
void applyFormatChanges(int from, int charsRemoved, int charsAdded);
void updateFormats(const FontSettings &fontSettings);
FontSettings fontSettings;
QVector<QTextCharFormat> formatChanges;
QTextBlock currentBlock;
bool rehighlightPending = false;
@@ -765,6 +766,12 @@ void SyntaxHighlighter::setFontSettings(const FontSettings &fontSettings)
Q_D(SyntaxHighlighter);
d->updateFormats(fontSettings);
}
FontSettings SyntaxHighlighter::fontSettings() const
{
Q_D(const SyntaxHighlighter);
return d->fontSettings;
}
/*!
The syntax highlighter is not anymore reacting to the text document if \a noAutmatic is
\c true.
@@ -836,6 +843,7 @@ void SyntaxHighlighter::highlightBlock(const QString &text)
void SyntaxHighlighterPrivate::updateFormats(const FontSettings &fontSettings)
{
this->fontSettings = fontSettings;
// C_TEXT is handled by text editor's foreground and background color,
// so use empty format for that
for (const auto &pair : qAsConst(formatCategories)) {

View File

@@ -69,6 +69,7 @@ public:
// Don't call in constructors of derived classes
virtual void setFontSettings(const TextEditor::FontSettings &fontSettings);
TextEditor::FontSettings fontSettings() const;
void setNoAutomaticHighlighting(bool noAutomatic);

View File

@@ -64,7 +64,7 @@ public:
void BaseAnnotationHighlighterPrivate::updateOtherFormats()
{
m_background = TextEditor::TextEditorSettings::fontSettings()
m_background = q->fontSettings()
.toTextCharFormat(TextEditor::C_TEXT)
.brushProperty(QTextFormat::BackgroundBrush)
.color();