TextEditor: Fix updating TextMark priority

Change-Id: Ie88b75507faf1f467b4e044f2b06e25aae32bdcf
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2017-06-26 14:39:13 +02:00
parent 829bf2b9e6
commit 1d57a7e566
3 changed files with 15 additions and 4 deletions

View File

@@ -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<TextDocumentLayout*>(d->m_document.documentLayout());
QTC_ASSERT(documentLayout, return);
documentLayout->requestUpdate();

View File

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

View File

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