diff --git a/src/plugins/texteditor/textdocument.cpp b/src/plugins/texteditor/textdocument.cpp index 707d87a97a4..f146507e4c0 100644 --- a/src/plugins/texteditor/textdocument.cpp +++ b/src/plugins/texteditor/textdocument.cpp @@ -957,7 +957,13 @@ void TextDocument::removeMark(TextMark *mark) void TextDocument::updateMark(TextMark *mark) { - Q_UNUSED(mark) + QTextBlock block = d->m_document.findBlockByNumber(mark->lineNumber() - 1); + if (block.isValid()) { + TextBlockUserData *userData = TextDocumentLayout::userData(block); + // re-evaluate priority + userData->removeMark(mark); + userData->addMark(mark); + } auto documentLayout = qobject_cast(d->m_document.documentLayout()); QTC_ASSERT(documentLayout, return); documentLayout->requestUpdate(); diff --git a/src/plugins/texteditor/textmark.cpp b/src/plugins/texteditor/textmark.cpp index fcca18ef9bb..975cc7a41c5 100644 --- a/src/plugins/texteditor/textmark.cpp +++ b/src/plugins/texteditor/textmark.cpp @@ -131,6 +131,12 @@ void TextMark::updateMarker() m_baseTextDocument->updateMark(this); } +void TextMark::setPriority(TextMark::Priority prioriy) +{ + m_priority = prioriy; + updateMarker(); +} + bool TextMark::isVisible() const { return m_visible; @@ -139,8 +145,7 @@ bool TextMark::isVisible() const void TextMark::setVisible(bool visible) { m_visible = visible; - if (m_baseTextDocument) - m_baseTextDocument->updateMark(this); + updateMarker(); } double TextMark::widthFactor() const diff --git a/src/plugins/texteditor/textmark.h b/src/plugins/texteditor/textmark.h index e50266a5ac2..162ac2f7943 100644 --- a/src/plugins/texteditor/textmark.h +++ b/src/plugins/texteditor/textmark.h @@ -82,7 +82,7 @@ public: // call this if the icon has changed. void updateMarker(); Priority priority() const { return m_priority;} - void setPriority(Priority prioriy) { m_priority = prioriy; } + void setPriority(Priority prioriy); bool isVisible() const; void setVisible(bool isVisible); Core::Id category() const { return m_category; }