diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index a3d7fbdddb4ea2d06d0343bd194f36641620508d..7cedf1806a120201ea65d17183342f34db5a68bd 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -725,7 +725,7 @@ QmlJSTextEditor::QmlJSTextEditor(QWidget *parent) : connect(m_updateOutlineIndexTimer, SIGNAL(timeout()), this, SLOT(updateOutlineIndexNow())); m_cursorPositionTimer = new QTimer(this); - m_cursorPositionTimer->setInterval(UPDATE_DOCUMENT_DEFAULT_INTERVAL); + m_cursorPositionTimer->setInterval(UPDATE_OUTLINE_INTERVAL); m_cursorPositionTimer->setSingleShot(true); connect(m_cursorPositionTimer, SIGNAL(timeout()), this, SLOT(updateCursorPositionNow())); @@ -984,20 +984,25 @@ void QmlJSTextEditor::updateCursorPositionNow() Node *newNode = m_semanticInfo.declaringMemberNoProperties(position()); if (oldNode != newNode && m_oldCursorPosition != -1) m_contextPane->apply(editableInterface(), m_semanticInfo.lookupContext(), newNode, false); - if (oldNode != newNode && - m_contextPane->isAvailable(editableInterface(), m_semanticInfo.lookupContext(), newNode) && + if (m_contextPane->isAvailable(editableInterface(), m_semanticInfo.lookupContext(), newNode) && !m_contextPane->widget()->isVisible()) { QList<TextEditor::Internal::RefactorMarker> markers; if (UiObjectMember *m = newNode->uiObjectMemberCast()) { + const int start = qualifiedTypeNameId(m)->identifierToken.begin(); for (UiQualifiedId *q = qualifiedTypeNameId(m); q; q = q->next) { if (! q->next) { const int end = q->identifierToken.end(); - TextEditor::Internal::RefactorMarker marker; - QTextCursor tc(document()); - tc.setPosition(end); - marker.cursor = tc; - marker.tooltip = tr("Show Qt Quick ToolBar"); - markers.append(marker); + if (position() >= start && position() <= end) { + TextEditor::Internal::RefactorMarker marker; + QTextCursor tc(document()); + tc.setPosition(end); + marker.cursor = tc; + marker.tooltip = tr("Show Qt Quick ToolBar"); + markers.append(marker); + } else { + QList<TextEditor::Internal::RefactorMarker> markers; + setRefactorMarkers(markers); + } } } } @@ -1748,7 +1753,7 @@ void QmlJSTextEditor::updateSemanticInfo(const SemanticInfo &semanticInfo) Node *newNode = m_semanticInfo.declaringMemberNoProperties(position()); if (newNode) { m_contextPane->apply(editableInterface(), m_semanticInfo.lookupContext(), newNode, true); - showTextMarker(); + m_cursorPositionTimer->start(); //update text marker } }