diff --git a/src/plugins/coreplugin/designmode.cpp b/src/plugins/coreplugin/designmode.cpp index 34473c5ebb5..37d48741d5c 100644 --- a/src/plugins/coreplugin/designmode.cpp +++ b/src/plugins/coreplugin/designmode.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include @@ -87,7 +88,6 @@ struct DesignEditorInfo { int widgetIndex; QStringList mimeTypes; QList context; - bool preferredMode; QWidget *widget; }; @@ -181,13 +181,11 @@ QStringList DesignMode::registeredMimeTypes() const */ void DesignMode::registerDesignWidget(QWidget *widget, const QStringList &mimeTypes, - const QList &context, - bool preferDesignMode) + const QList &context) { int index = d->m_stackWidget->addWidget(widget); DesignEditorInfo *info = new DesignEditorInfo; - info->preferredMode = preferDesignMode; info->mimeTypes = mimeTypes; info->context = context; info->widgetIndex = index; @@ -209,8 +207,10 @@ void DesignMode::unregisterDesignWidget(QWidget *widget) // if editor changes, check if we have valid mimetype registered. void DesignMode::currentEditorChanged(Core::IEditor *editor) { + if (d->m_currentEditor.data() == editor) + return; + bool mimeEditorAvailable = false; - bool modeActivated = false; Core::ICore *core = Core::ICore::instance(); if (editor && editor->file()) { @@ -227,10 +227,6 @@ void DesignMode::currentEditorChanged(Core::IEditor *editor) setActiveContext(editorInfo->context); mimeEditorAvailable = true; setEnabled(true); - if (editorInfo->preferredMode && core->modeManager()->currentMode() != this) { - core->modeManager()->activateMode(Constants::MODE_DESIGN); - modeActivated = true; - } break; } } @@ -238,29 +234,24 @@ void DesignMode::currentEditorChanged(Core::IEditor *editor) break; } } - if (!mimeEditorAvailable) { - setActiveContext(QList()); - setEnabled(false); - } - - if (!mimeEditorAvailable && core->modeManager()->currentMode() == this) - { - // switch back to edit mode - we don't want to be here - core->modeManager()->activateMode(Constants::MODE_EDIT); - } - - if (d->m_currentEditor.data() == editor) - return; - if (d->m_currentEditor) disconnect(d->m_currentEditor.data(), SIGNAL(changed()), this, SLOT(updateActions())); - d->m_currentEditor = QWeakPointer(editor); + if (!mimeEditorAvailable) { + setActiveContext(QList()); + setEnabled(false); + d->m_currentEditor = QWeakPointer(); + emit actionsUpdated(d->m_currentEditor.data()); - if (d->m_currentEditor) - connect(d->m_currentEditor.data(), SIGNAL(changed()), this, SLOT(updateActions())); + QTC_ASSERT(core->modeManager()->currentMode() != this, core->modeManager()->activateMode(Constants::MODE_EDIT)); + } else { + d->m_currentEditor = QWeakPointer(editor); - emit actionsUpdated(d->m_currentEditor.data()); + if (d->m_currentEditor) + connect(d->m_currentEditor.data(), SIGNAL(changed()), this, SLOT(updateActions())); + + emit actionsUpdated(d->m_currentEditor.data()); + } } void DesignMode::updateActions() diff --git a/src/plugins/coreplugin/designmode.h b/src/plugins/coreplugin/designmode.h index eaeecd99323..03da5f61dee 100644 --- a/src/plugins/coreplugin/designmode.h +++ b/src/plugins/coreplugin/designmode.h @@ -59,8 +59,7 @@ public: void registerDesignWidget(QWidget *widget, const QStringList &mimeTypes, - const QList &context, - bool preferDesignMode = false); + const QList &context); void unregisterDesignWidget(QWidget *widget); QStringList registeredMimeTypes() const; diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index d78c62913a9..048e8a57c5c 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -979,7 +979,6 @@ Core::IEditor *EditorManager::activateEditor(Core::Internal::EditorView *view, C if (isVisible()) editor->widget()->setFocus(); } - emit currentEditorChanged(editor); return editor; }