diff --git a/src/plugins/coreplugin/coreimpl.cpp b/src/plugins/coreplugin/coreimpl.cpp index f17028ef55830775736776b3e755aa70646378cb..b9628e0eb9bacc48bbf95efe5692fa7847c41507 100644 --- a/src/plugins/coreplugin/coreimpl.cpp +++ b/src/plugins/coreplugin/coreimpl.cpp @@ -228,9 +228,9 @@ void CoreImpl::removeContextObject(IContext *context) m_mainwindow->removeContextObject(context); } -void CoreImpl::openFiles(const QStringList &arguments) +void CoreImpl::openFiles(const QStringList &arguments, bool switchMode) { - m_mainwindow->openFiles(arguments); + m_mainwindow->openFiles(arguments, switchMode); } void CoreImpl::emitNewItemsDialogRequested() diff --git a/src/plugins/coreplugin/coreimpl.h b/src/plugins/coreplugin/coreimpl.h index 0e00f4e02b428062cb6b9b610da4fb76ad0c22e5..e926c9fdcb944f0ef7058027fee564a65aad0768 100644 --- a/src/plugins/coreplugin/coreimpl.h +++ b/src/plugins/coreplugin/coreimpl.h @@ -88,7 +88,7 @@ public: void addContextObject(IContext *context); void removeContextObject(IContext *context); - void openFiles(const QStringList &fileNames); + void openFiles(const QStringList &fileNames, bool switchMode); void emitNewItemsDialogRequested(); diff --git a/src/plugins/coreplugin/coreplugin.cpp b/src/plugins/coreplugin/coreplugin.cpp index e1894406ddfc182a890e0241634af349c7aa598b..9e8d03bfcca31dae0c5e597ea0ca623f9afd0cd8 100644 --- a/src/plugins/coreplugin/coreplugin.cpp +++ b/src/plugins/coreplugin/coreplugin.cpp @@ -100,7 +100,7 @@ void CorePlugin::extensionsInitialized() void CorePlugin::remoteCommand(const QStringList & /* options */, const QStringList &args) { - m_mainWindow->openFiles(args); + m_mainWindow->openFiles(args, true); m_mainWindow->activateWindow(); } diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index 8aa2ff502d61bda46453e7b3e1d459ee58a4ca91..b07ee409edfd0da404ede04e9c01b3dbb79aaa63 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -119,7 +119,7 @@ public: virtual void addContextObject(IContext *context) = 0; virtual void removeContextObject(IContext *context) = 0; - virtual void openFiles(const QStringList &fileNames) = 0; + virtual void openFiles(const QStringList &fileNames, bool switchMode) = 0; signals: void coreAboutToOpen(); diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index ffb3a46f6b2c42b24217bc3e08eb2f8d6ebf02bd..c7a9c8a074aefd437101f9a85abb0e720c29fe3b 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -416,7 +416,7 @@ void MainWindow::dropEvent(QDropEvent *event) QStringList files; if (isDesktopFileManagerDrop(event->mimeData(), &files)) { event->accept(); - openFiles(files); + openFiles(files, true); } else { event->ignore(); } @@ -793,7 +793,7 @@ void MainWindow::newFile() void MainWindow::openFile() { - openFiles(editorManager()->getOpenFileNames()); + openFiles(editorManager()->getOpenFileNames(), true); } static QList<IFileFactory*> getNonEditorFileFactories() @@ -823,7 +823,7 @@ static IFileFactory *findFileFactory(const QList<IFileFactory*> &fileFactories, } // opens either an editor or loads a project -void MainWindow::openFiles(const QStringList &fileNames) +void MainWindow::openFiles(const QStringList &fileNames, bool switchMode) { QList<IFileFactory*> nonEditorFileFactories = getNonEditorFileFactories(); @@ -832,8 +832,13 @@ void MainWindow::openFiles(const QStringList &fileNames) const QString absoluteFilePath = fi.absoluteFilePath(); if (IFileFactory *fileFactory = findFileFactory(nonEditorFileFactories, mimeDatabase(), fi)) { fileFactory->open(absoluteFilePath); + if (switchMode) + Core::ModeManager::instance()->activateMode(Core::Constants::MODE_EDIT); } else { - editorManager()->openEditor(absoluteFilePath); + EditorManager::OpenEditorFlag flags; + if (switchMode) + flags = EditorManager::ModeSwitch; + editorManager()->openEditor(absoluteFilePath, QString(), flags); } } } diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index 379676bad2461170ab0950f7cae3b77ce5a76e56..92adeceda6ddb2c105d61ad76b37bed39ece9948 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -97,7 +97,7 @@ public: void removeContextObject(IContext *contex); void resetContext(); - void openFiles(const QStringList &fileNames); + void openFiles(const QStringList &fileNames, bool switchMode); Core::ActionManager *actionManager() const; Core::FileManager *fileManager() const; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 449d4e0b7773f6e46781026124ae56b75040399a..22cbc2dc830e57dfdf1e683ac8ca040b096634cc 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1240,7 +1240,7 @@ void ProjectExplorerPlugin::restoreSession() connect(d->m_welcomePage, SIGNAL(requestSession(QString)), this, SLOT(loadSession(QString))); connect(d->m_welcomePage, SIGNAL(requestProject(QString)), this, SLOT(loadProject(QString))); - Core::ICore::instance()->openFiles(arguments); + Core::ICore::instance()->openFiles(arguments, false); updateActions(); } @@ -2375,7 +2375,7 @@ void ProjectExplorerPlugin::openOpenProjectDialog() const QString path = fileMananger->useProjectsDirectory() ? fileMananger->projectsDirectory() : QString(); const QStringList files = fileMananger->getOpenFileNames(filters, path, &projectFilesFilter); if (!files.isEmpty()) - Core::ICore::instance()->openFiles(files); + Core::ICore::instance()->openFiles(files, true); } Q_EXPORT_PLUGIN(ProjectExplorerPlugin) diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp index ae6e92046835fe4c47a2d1871c09cef58fa2abb7..10d3af85ec0d9c26f7a7649de83b82e1ad89bd8c 100644 --- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp +++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp @@ -335,7 +335,7 @@ void GettingStartedWelcomePageWidget::slotOpenExample() tryFile = proFileInfo.path() + '/' + proFileInfo.baseName() + ".qml"; if(QFile::exists(tryFile)) files << tryFile; - Core::ICore::instance()->openFiles(files); + Core::ICore::instance()->openFiles(files, true); if (!helpFile.isEmpty()) slotOpenContextHelpPage(helpFile); }