forked from qt-creator/qt-creator
Make TextEditor setup more flexible
So far it was only possible to combine TextEditorFactory, BaseTextEditor and TextEditorWidget directly. That TextEditorWidget is also directly a QPlainTextEdit made it impossible to "decorate" the text editor widget with something else without a lot of effort. Make it possible to create a text editor factory that returns an arbitrary widget, as long as it can be "cast" to a TextEditorWidget with either qobject_cast or Aggregation::query. That way the TextEditorWidget instance can be attached to the editor widget via Aggregation. Adapt other code that accesses TextEditorWidget from editors accordingly. Introduce a common method how to do that. Change-Id: I72b8721f3a8a8d8281c39af75253e9c80cbe1250 Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -132,7 +132,7 @@ TextEditorWidget *RefactoringChanges::openEditor(const QString &fileName, bool a
|
||||
IEditor *editor = EditorManager::openEditorAt(fileName, line, column, Id(), flags);
|
||||
|
||||
if (editor)
|
||||
return qobject_cast<TextEditorWidget *>(editor->widget());
|
||||
return TextEditorWidget::fromEditor(editor);
|
||||
else
|
||||
return nullptr;
|
||||
}
|
||||
@@ -163,7 +163,7 @@ RefactoringFile::RefactoringFile(const QString &fileName, const QSharedPointer<R
|
||||
{
|
||||
QList<IEditor *> editors = DocumentModel::editorsForFilePath(fileName);
|
||||
if (!editors.isEmpty()) {
|
||||
auto editorWidget = qobject_cast<TextEditorWidget *>(editors.first()->widget());
|
||||
auto editorWidget = TextEditorWidget::fromEditor(editors.first());
|
||||
if (editorWidget && !editorWidget->isReadOnly())
|
||||
m_editor = editorWidget;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user