TextEditor: update matching parenthesis in the editor

... after updating the parenthesis in the layout

Task-number: QTCREATORBUG-26183
Change-Id: I346046fbc3932b94227c1ac5bee6b0d7c44651e1
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
David Schulz
2021-09-24 09:59:50 +02:00
parent 0524e9236f
commit 421e06393f
3 changed files with 31 additions and 8 deletions

View File

@@ -1058,6 +1058,7 @@ void TextEditorWidgetPrivate::ctor(const QSharedPointer<TextDocument> &doc)
// parentheses matcher
m_formatRange = true;
m_parenthesesMatchingTimer.setSingleShot(true);
m_parenthesesMatchingTimer.setInterval(50);
QObject::connect(&m_parenthesesMatchingTimer, &QTimer::timeout,
this, &TextEditorWidgetPrivate::_q_matchParentheses);
@@ -2714,7 +2715,7 @@ void TextEditorWidget::keyPressEvent(QKeyEvent *e)
skip_event:
if (!ro && e->key() == Qt::Key_Delete && d->m_parenthesesMatchingEnabled)
d->m_parenthesesMatchingTimer.start(50);
d->m_parenthesesMatchingTimer.start();
if (!ro && d->m_contentsChanged && isPrintableText(eventText) && !inOverwriteMode)
d->m_codeAssistant.process();
@@ -3428,6 +3429,9 @@ void TextEditorWidgetPrivate::setupDocumentSignals()
QObject::connect(documentLayout, &TextDocumentLayout::updateExtraArea,
this, &TextEditorWidgetPrivate::scheduleUpdateHighlightScrollBar);
QObject::connect(documentLayout, &TextDocumentLayout::parenthesesChanged,
&m_parenthesesMatchingTimer, QOverload<>::of(&QTimer::start));
QObject::connect(documentLayout, &QAbstractTextDocumentLayout::documentSizeChanged,
this, &TextEditorWidgetPrivate::scheduleUpdateHighlightScrollBar);
@@ -5431,7 +5435,7 @@ void TextEditorWidgetPrivate::updateHighlights()
// Delay update when no matching is displayed yet, to avoid flicker
if (q->extraSelections(TextEditorWidget::ParenthesesMatchingSelection).isEmpty()
&& m_bracketsAnimator == nullptr) {
m_parenthesesMatchingTimer.start(50);
m_parenthesesMatchingTimer.start();
} else {
// when we uncheck "highlight matching parentheses"
// we need clear current selection before viewport update