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;
|
int line, column;
|
||||||
m_textEditor->editorWidget()->convertPosition(nodeOffset, &line, &column);
|
m_textEditor->editorWidget()->convertPosition(nodeOffset, &line, &column);
|
||||||
m_textEditor->editorWidget()->gotoLine(line + 1, column);
|
m_textEditor->editorWidget()->gotoLine(line + 1, column);
|
||||||
|
|
||||||
|
highlightToModelNode(modelNode);
|
||||||
}
|
}
|
||||||
m_blockCursorSelectionSynchronisation = false;
|
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()
|
void TextEditorWidget::jumpTextCursorToSelectedModelNode()
|
||||||
{
|
{
|
||||||
if (m_blockRoundTrip)
|
if (m_blockRoundTrip)
|
||||||
@@ -217,6 +233,10 @@ bool TextEditorWidget::eventFilter(QObject *, QEvent *event)
|
|||||||
return true;
|
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;
|
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)
|
void TextEditorWidget::dropEvent(QDropEvent *dropEvent)
|
||||||
{
|
{
|
||||||
QTextCursor cursor = m_textEditor->editorWidget()->cursorForPosition(dropEvent->pos());
|
QTextCursor cursor = m_textEditor->editorWidget()->cursorForPosition(dropEvent->pos());
|
||||||
@@ -323,6 +357,7 @@ void TextEditorWidget::dropEvent(QDropEvent *dropEvent)
|
|||||||
actionManager.handleExternalAssetsDrop(dropEvent->mimeData());
|
actionManager.handleExternalAssetsDrop(dropEvent->mimeData());
|
||||||
}
|
}
|
||||||
m_textEditorView->model()->endDrag();
|
m_textEditorView->model()->endDrag();
|
||||||
|
m_textEditor->editorWidget()->updateFoldingHighlight(QTextCursor());
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
|||||||
@@ -47,10 +47,12 @@ public:
|
|||||||
|
|
||||||
void setBlockCursorSelectionSynchronisation(bool b);
|
void setBlockCursorSelectionSynchronisation(bool b);
|
||||||
void jumpToModelNode(const ModelNode &modelNode);
|
void jumpToModelNode(const ModelNode &modelNode);
|
||||||
|
void highlightToModelNode(const ModelNode &modelNode);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool eventFilter(QObject *object, QEvent *event) override;
|
bool eventFilter(QObject *object, QEvent *event) override;
|
||||||
void dragEnterEvent(QDragEnterEvent *dragEnterEvent) override;
|
void dragEnterEvent(QDragEnterEvent *dragEnterEvent) override;
|
||||||
|
void dragMoveEvent(QDragMoveEvent *dragMoveEvent) override;
|
||||||
void dropEvent(QDropEvent *dropEvent) override;
|
void dropEvent(QDropEvent *dropEvent) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user