diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index e5011c7a651..a22e6e4676e 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -185,7 +185,6 @@ void DocumentWarningWidget::goToError() DesignModeWidget::DesignModeWidget(QWidget *parent) : QWidget(parent), m_syncWithTextEdit(false), - m_textEditor(0), m_mainSplitter(0), m_leftSideBar(0), m_rightSideBar(0), @@ -271,8 +270,12 @@ void DesignModeWidget::toggleSidebars() void DesignModeWidget::showEditor(Core::IEditor *editor) { if (m_textEditor && editor) - if (m_textEditor->file()->fileName() == editor->file()->fileName()) - return; + if (m_textEditor->file()->fileName() != editor->file()->fileName()) { + if (!m_keepNavigatorHistory) + addNavigatorHistoryEntry(editor->file()->fileName()); + setupNavigatorHistory(); + } + // // Prevent recursive calls to function by explicitly managing initialization status // (QApplication::processEvents is called explicitly at a number of places) @@ -295,9 +298,6 @@ void DesignModeWidget::showEditor(Core::IEditor *editor) textEditor = qobject_cast(editor); if (textEditor) m_fakeToolBar->addEditor(textEditor); - if (!m_keepNavigatorHistory) - addNavigatorHistoryEntry(fileName); - setupNavigatorHistory(); } if (debug) diff --git a/src/plugins/qmldesigner/designmodewidget.h b/src/plugins/qmldesigner/designmodewidget.h index 1be2fa2fef3..ec99f589abc 100644 --- a/src/plugins/qmldesigner/designmodewidget.h +++ b/src/plugins/qmldesigner/designmodewidget.h @@ -130,7 +130,7 @@ public: void saveSettings(); void setAutoSynchronization(bool sync); - TextEditor::ITextEditor *textEditor() const {return m_textEditor; } + TextEditor::ITextEditor *textEditor() const {return m_textEditor.data(); } private slots: void undo(); @@ -200,7 +200,7 @@ private: void setupNavigatorHistory(); void addNavigatorHistoryEntry(const QString &fileName); - TextEditor::ITextEditor *m_textEditor; + QWeakPointer m_textEditor; QSplitter *m_mainSplitter; Core::SideBar *m_leftSideBar;