diff --git a/src/plugins/coreplugin/designmode.cpp b/src/plugins/coreplugin/designmode.cpp index 1dcece3b695ed03be4ced06053af84a857cce1b6..351767dcbe4cedd4d8cf6c2038f0b7952c52c7d2 100644 --- a/src/plugins/coreplugin/designmode.cpp +++ b/src/plugins/coreplugin/designmode.cpp @@ -186,10 +186,9 @@ void DesignMode::currentEditorChanged(Core::IEditor *editor) if (!mimeEditorAvailable) setEnabled(false); - if ((!mimeEditorAvailable && core->modeManager()->currentMode() == this) - || !modeActivated) + if (!mimeEditorAvailable && core->modeManager()->currentMode() == this) { - // switch back to edit mode + // switch back to edit mode - we don't want to be here core->modeManager()->activateMode(Constants::MODE_EDIT); } diff --git a/src/plugins/designer/cpp/formclasswizard.cpp b/src/plugins/designer/cpp/formclasswizard.cpp index 2c185c33506f9428d99884530f008eb6e3f02e78..c6b7b9a75f635e06b7eaae682cbe2721026a43a5 100644 --- a/src/plugins/designer/cpp/formclasswizard.cpp +++ b/src/plugins/designer/cpp/formclasswizard.cpp @@ -96,7 +96,7 @@ Core::GeneratedFiles FormClassWizard::generateFiles(const QWizard *w, QString *e // UI Core::GeneratedFile uiFile(formFileName); uiFile.setContents(params.uiTemplate()); - uiFile.setEditorId(QLatin1String(Constants::FORMEDITOR_ID)); + uiFile.setEditorId(QLatin1String(Constants::DESIGNER_XML_EDITOR_ID)); QString source, header; Designer::FormClassWizardGenerationParameters generationParameters; diff --git a/src/plugins/designer/formwindoweditor.cpp b/src/plugins/designer/formwindoweditor.cpp index 7915619525947cd0117000c3a3e3632b788ac7e4..d32ad3bef84282e815eaae14f445fb36a470c81c 100644 --- a/src/plugins/designer/formwindoweditor.cpp +++ b/src/plugins/designer/formwindoweditor.cpp @@ -144,6 +144,7 @@ void FormWindowEditor::setFile(Core::IFile *file) } m_file = file; + m_formWindow->setFileName(file->fileName()); if (m_file) { connect(m_file, SIGNAL(changed()), this, SIGNAL(changed())); @@ -185,6 +186,9 @@ bool FormWindowEditor::createNew(const QString &contents) if (qdesigner_internal::FormWindowBase *fw = qobject_cast<qdesigner_internal::FormWindowBase *>(m_formWindow)) fw->setDesignerGrid(qdesigner_internal::FormWindowBase::defaultDesignerGrid()); + + initializeResources(); + return true; } @@ -216,31 +220,42 @@ bool FormWindowEditor::open(const QString &fileName /*= QString()*/) return false; m_formWindow->setDirty(false); - ProjectExplorer::ProjectExplorerPlugin *pe = ProjectExplorer::ProjectExplorerPlugin::instance(); - ProjectExplorer::SessionManager *session = pe->session(); - m_sessionNode = session->sessionNode(); - m_sessionWatcher = new ProjectExplorer::NodesWatcher(); - connect(m_sessionWatcher, SIGNAL(filesAdded()), this, SLOT(updateResources())); - connect(m_sessionWatcher, SIGNAL(filesRemoved()), this, SLOT(updateResources())); - connect(m_sessionWatcher, SIGNAL(foldersAdded()), this, SLOT(updateResources())); - connect(m_sessionWatcher, SIGNAL(foldersRemoved()), this, SLOT(updateResources())); - m_sessionNode->registerWatcher(m_sessionWatcher); - - if (qdesigner_internal::FormWindowBase *fw = qobject_cast<qdesigner_internal::FormWindowBase *>(m_formWindow)) { - QtResourceSet *rs = fw->resourceSet(); - m_originalUiQrcPaths = rs->activeQrcPaths(); - } + initializeResources(fileName); - emit opened(fileName); - updateResources(); + setDisplayName(fi.fileName()); - QDesignerFormWindowManagerInterface *fwm = FormEditorW::instance()->designerEditor()->formWindowManager(); - fwm->setActiveFormWindow(m_formWindow); + } - setDisplayName(fi.fileName()); + return true; +} +void FormWindowEditor::initializeResources(const QString &fileName /*= QString()*/) +{ + ProjectExplorer::ProjectExplorerPlugin *pe = ProjectExplorer::ProjectExplorerPlugin::instance(); + ProjectExplorer::SessionManager *session = pe->session(); + + m_sessionNode = session->sessionNode(); + m_sessionWatcher = new ProjectExplorer::NodesWatcher(); + + connect(m_sessionWatcher, SIGNAL(filesAdded()), this, SLOT(updateResources())); + connect(m_sessionWatcher, SIGNAL(filesRemoved()), this, SLOT(updateResources())); + connect(m_sessionWatcher, SIGNAL(foldersAdded()), this, SLOT(updateResources())); + connect(m_sessionWatcher, SIGNAL(foldersRemoved()), this, SLOT(updateResources())); + m_sessionNode->registerWatcher(m_sessionWatcher); + + if (qdesigner_internal::FormWindowBase *fw = qobject_cast<qdesigner_internal::FormWindowBase *>(m_formWindow)) { + QtResourceSet *rs = fw->resourceSet(); + m_originalUiQrcPaths = rs->activeQrcPaths(); } + + if (!fileName.isEmpty()) + emit opened(fileName); + + updateResources(); + + QDesignerFormWindowManagerInterface *fwm = FormEditorW::instance()->designerEditor()->formWindowManager(); + fwm->setActiveFormWindow(m_formWindow); + emit changed(); - return true; } void FormWindowEditor::updateResources() diff --git a/src/plugins/designer/formwindoweditor.h b/src/plugins/designer/formwindoweditor.h index ed9b7a67ab081e70efe613b76ef049b00713e6b9..50da0e86b4288f67d76a89b881ac6b4607caadd7 100644 --- a/src/plugins/designer/formwindoweditor.h +++ b/src/plugins/designer/formwindoweditor.h @@ -113,6 +113,8 @@ private slots: void updateResources(); private: + void initializeResources(const QString &fileName = QString()); + QWidget *m_containerWidget; QString m_displayName; QList<int> m_context; diff --git a/src/plugins/designer/formwizard.cpp b/src/plugins/designer/formwizard.cpp index aa79fdf3b21514d8c677d57d1c61a3d6089e841c..1c219a121b71c7bd0f1fdc506006c7a6373d8945 100644 --- a/src/plugins/designer/formwizard.cpp +++ b/src/plugins/designer/formwizard.cpp @@ -66,6 +66,6 @@ Core::GeneratedFiles FormWizard::generateFiles(const QWizard *w, Core::GeneratedFile file(fileName); file.setContents(formTemplate); - file.setEditorId(QLatin1String(Constants::FORMEDITOR_ID)); + file.setEditorId(QLatin1String(Constants::DESIGNER_XML_EDITOR_ID)); return Core::GeneratedFiles() << file; } diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index dd67918caba7cab40cbd29625838b39612f96a2e..e7e7ab6281af41938139d8095b0c18f433e333ef 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -204,6 +204,7 @@ void BauhausPlugin::createDesignModeWidget() Core::Constants::PASTE, m_context->context()); command->setDefaultKeySequence(QKeySequence::Paste); editMenu->addAction(command, Core::Constants::G_EDIT_COPYPASTE); + Core::ModeManager *modeManager = creatorCore->modeManager(); command = actionManager->registerAction(m_mainWidget->selectAllAction(), Core::Constants::SELECTALL, m_context->context()); @@ -218,7 +219,8 @@ void BauhausPlugin::createDesignModeWidget() m_mainWidget->addAction(deleteAction); - Core::ModeManager *modeManager = creatorCore->modeManager(); + connect(m_editorManager, SIGNAL(currentEditorChanged(Core::IEditor*)), + this, SLOT(updateEditor(Core::IEditor*))); connect(modeManager, SIGNAL(currentModeChanged(Core::IMode*)), this, SLOT(modeChanged(Core::IMode*))); @@ -228,6 +230,16 @@ void BauhausPlugin::createDesignModeWidget() } +void BauhausPlugin::updateEditor(Core::IEditor *editor) +{ + Core::ICore *creatorCore = Core::ICore::instance(); + if (editor->id() == QmlJSEditor::Constants::C_QMLJSEDITOR_ID + && creatorCore->modeManager()->currentMode() == m_designMode) + { + m_mainWidget->showEditor(editor); + } +} + void BauhausPlugin::modeChanged(Core::IMode *mode) { if (mode == m_designMode) { @@ -236,7 +248,6 @@ void BauhausPlugin::modeChanged(Core::IMode *mode) } else { if (m_isActive) { m_isActive = false; - m_mainWidget->showEditor(0); } } diff --git a/src/plugins/qmldesigner/qmldesignerplugin.h b/src/plugins/qmldesigner/qmldesignerplugin.h index 6e4c7c16b20bcb61a6c472ab12a1fa59733a17b6..9ea4479890e5bf4ae9443b69ff284bce90580596 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.h +++ b/src/plugins/qmldesigner/qmldesignerplugin.h @@ -84,6 +84,7 @@ private slots: void modeChanged(Core::IMode *mode); void textEditorsClosed(QList<Core::IEditor *> editors); void updateActions(Core::IEditor* editor); + void updateEditor(Core::IEditor *editor); private: void createDesignModeWidget();