Coco: update annotation color on font settings change

Change-Id: I7812fccb047d696701d477ae85697facdb1c0361
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2022-06-13 10:15:35 +02:00
parent 2b428d5de0
commit 9b08363d82
3 changed files with 34 additions and 6 deletions

View File

@@ -154,15 +154,11 @@ class CocoTextMark : public TextEditor::TextMark
public:
CocoTextMark(const FilePath &fileName, const CocoDiagnostic &diag, const Id &clientId)
: TextEditor::TextMark(fileName, diag.range().start().line() + 1, clientId)
, m_severity(diag.cocoSeverity())
{
setLineAnnotation(diag.message());
setToolTip(diag.message());
if (optional<CocoDiagnosticSeverity> severity = diag.cocoSeverity()) {
const TextEditor::TextStyle style = styleForSeverity(*severity);
m_annotationColor =
TextEditor::TextEditorSettings::fontSettings().formatFor(style).foreground();
}
updateAnnotationColor();
}
QColor annotationColor() const override
@@ -171,6 +167,16 @@ public:
: TextEditor::TextMark::annotationColor();
}
void updateAnnotationColor()
{
if (m_severity) {
const TextEditor::TextStyle style = styleForSeverity(*m_severity);
m_annotationColor =
TextEditor::TextEditorSettings::fontSettings().formatFor(style).foreground();
}
}
optional<CocoDiagnosticSeverity> m_severity;
QColor m_annotationColor;
};
@@ -180,10 +186,22 @@ public:
CocoDiagnosticManager(Client *client)
: DiagnosticManager(client)
{
connect(TextEditor::TextEditorSettings::instance(),
&TextEditor::TextEditorSettings::fontSettingsChanged,
this,
&CocoDiagnosticManager::fontSettingsChanged);
setExtraSelectionsId("CocoExtraSelections");
}
private:
void fontSettingsChanged(const TextEditor::FontSettings &fontSettings)
{
forAllMarks([](TextEditor::TextMark *mark){
static_cast<CocoTextMark *>(mark)->updateAnnotationColor();
mark->updateMarker();
});
}
TextEditor::TextMark *createTextMark(const FilePath &filePath,
const Diagnostic &diagnostic,
bool /*isProjectFile*/) const override

View File

@@ -176,6 +176,14 @@ void DiagnosticManager::setExtraSelectionsId(const Utils::Id &extraSelectionsId)
m_extraSelectionsId = extraSelectionsId;
}
void DiagnosticManager::forAllMarks(std::function<void (TextEditor::TextMark *)> func)
{
for (const Marks &marks : qAsConst(m_marks)) {
for (TextEditor::TextMark *mark : marks.marks)
func(mark);
}
}
void DiagnosticManager::clearDiagnostics()
{
for (const DocumentUri &uri : m_diagnostics.keys())

View File

@@ -85,6 +85,8 @@ protected:
void setExtraSelectionsId(const Utils::Id &extraSelectionsId);
void forAllMarks(std::function<void (TextEditor::TextMark *)> func);
private:
struct VersionedDiagnostics
{