forked from qt-creator/qt-creator
QmlDesigner: Highlight selected node in code editor
We also highlight the drag target when using drag and drop. Task-number: QDS-10869 Change-Id: Ic396848f93deaa3cce899c2cf431d5a7f5a940f5 Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io> Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
This commit is contained in:
@@ -116,10 +116,26 @@ void TextEditorWidget::jumpToModelNode(const ModelNode &modelNode)
|
||||
int line, column;
|
||||
m_textEditor->editorWidget()->convertPosition(nodeOffset, &line, &column);
|
||||
m_textEditor->editorWidget()->gotoLine(line + 1, column);
|
||||
|
||||
highlightToModelNode(modelNode);
|
||||
}
|
||||
m_blockCursorSelectionSynchronisation = false;
|
||||
}
|
||||
|
||||
void TextEditorWidget::highlightToModelNode(const ModelNode &modelNode)
|
||||
{
|
||||
RewriterView *rewriterView = m_textEditorView->model()->rewriterView();
|
||||
const int nodeOffset = rewriterView->nodeOffset(modelNode);
|
||||
if (nodeOffset > 0) {
|
||||
int line, column;
|
||||
m_textEditor->editorWidget()->convertPosition(nodeOffset, &line, &column);
|
||||
|
||||
QTextCursor cursor = m_textEditor->textCursor();
|
||||
cursor.setPosition(nodeOffset);
|
||||
m_textEditor->editorWidget()->updateFoldingHighlight(cursor);
|
||||
}
|
||||
}
|
||||
|
||||
void TextEditorWidget::jumpTextCursorToSelectedModelNode()
|
||||
{
|
||||
if (m_blockRoundTrip)
|
||||
@@ -217,6 +233,10 @@ bool TextEditorWidget::eventFilter(QObject *, QEvent *event)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (event->type() == QEvent::FocusIn) {
|
||||
m_textEditor->editorWidget()->updateFoldingHighlight(QTextCursor());
|
||||
} else if (event->type() == QEvent::FocusOut) {
|
||||
m_textEditor->editorWidget()->updateFoldingHighlight(QTextCursor());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -239,6 +259,20 @@ void TextEditorWidget::dragEnterEvent(QDragEnterEvent *dragEnterEvent)
|
||||
}
|
||||
}
|
||||
|
||||
void TextEditorWidget::dragMoveEvent(QDragMoveEvent *dragMoveEvent)
|
||||
{
|
||||
QTextCursor cursor = m_textEditor->editorWidget()->cursorForPosition(dragMoveEvent->pos());
|
||||
const int cursorPosition = cursor.position();
|
||||
RewriterView *rewriterView = m_textEditorView->model()->rewriterView();
|
||||
|
||||
QTC_ASSERT(rewriterView, return );
|
||||
ModelNode modelNode = rewriterView->nodeAtTextCursorPosition(cursorPosition);
|
||||
|
||||
if (!modelNode.isValid())
|
||||
return;
|
||||
highlightToModelNode(modelNode);
|
||||
}
|
||||
|
||||
void TextEditorWidget::dropEvent(QDropEvent *dropEvent)
|
||||
{
|
||||
QTextCursor cursor = m_textEditor->editorWidget()->cursorForPosition(dropEvent->pos());
|
||||
@@ -323,6 +357,7 @@ void TextEditorWidget::dropEvent(QDropEvent *dropEvent)
|
||||
actionManager.handleExternalAssetsDrop(dropEvent->mimeData());
|
||||
}
|
||||
m_textEditorView->model()->endDrag();
|
||||
m_textEditor->editorWidget()->updateFoldingHighlight(QTextCursor());
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
|
||||
@@ -47,10 +47,12 @@ public:
|
||||
|
||||
void setBlockCursorSelectionSynchronisation(bool b);
|
||||
void jumpToModelNode(const ModelNode &modelNode);
|
||||
void highlightToModelNode(const ModelNode &modelNode);
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject *object, QEvent *event) override;
|
||||
void dragEnterEvent(QDragEnterEvent *dragEnterEvent) override;
|
||||
void dragMoveEvent(QDragMoveEvent *dragMoveEvent) override;
|
||||
void dropEvent(QDropEvent *dropEvent) override;
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user