QmlDesigner: Fix indenting in embedded text editor

We have to set the duplicated editor as the current editor.
We avoid triggering a document change by using a flag.

Change-Id: I22410ec2f3b24695b397525811940c8303e0ed87
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Thomas Hartmann
2017-02-28 18:05:59 +01:00
committed by Tim Jenssen
parent cd01c82827
commit c168ba9f11
3 changed files with 16 additions and 0 deletions

View File

@@ -30,6 +30,8 @@
#include <rewriterview.h>
#include <qmldesignerplugin.h>
#include <theming.h>
#include <utils/fileutils.h>
@@ -68,6 +70,8 @@ void TextEditorWidget::setTextEditor(TextEditor::BaseTextEditor *textEditor)
layout()->addWidget(m_statusBar);
setFocusProxy(textEditor->editorWidget());
QmlDesignerPlugin::instance()->emitCurrentTextEditorChanged(textEditor);
connect(textEditor->editorWidget(), &QPlainTextEdit::cursorPositionChanged,
&m_updateSelectionTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
textEditor->editorWidget()->installEventFilter(this);

View File

@@ -82,6 +82,7 @@ public:
DesignerSettings settings;
Internal::DesignModeContext *context = nullptr;
bool blockEditorChange = false;
};
QmlDesignerPlugin *QmlDesignerPlugin::m_instance = nullptr;
@@ -345,6 +346,9 @@ void QmlDesignerPlugin::hideDesigner()
void QmlDesignerPlugin::changeEditor()
{
if (d->blockEditorChange)
return;
if (d->documentManager.hasCurrentDesignDocument()) {
deactivateAutoSynchronization();
d->mainWidget->saveSettings();
@@ -472,6 +476,13 @@ void QmlDesignerPlugin::switchToTextModeDeferred()
});
}
void QmlDesignerPlugin::emitCurrentTextEditorChanged(Core::IEditor *editor)
{
d->blockEditorChange = true;
Core::EditorManager::instance()->currentEditorChanged(editor);
d->blockEditorChange = false;
}
QmlDesignerPlugin *QmlDesignerPlugin::instance()
{
return m_instance;

View File

@@ -83,6 +83,7 @@ public:
Internal::DesignModeWidget *mainWidget() const;
void switchToTextModeDeferred();
void emitCurrentTextEditorChanged(Core::IEditor *editor);
private: // functions
void integrateIntoQtCreator(QWidget *modeWidget);