From 0a5094097d134f874880c8b899cc6c712b5bcb3b Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Tue, 19 Oct 2010 13:07:19 +0200 Subject: [PATCH] Welcome: Do not open main.cpp when project loading was canceled When choosing an example from the welcome screen and the user cancels loading the project: * Do not switch to edit mode * Do not load main.cpp * Do not pop up help Task-number: QTCREATORBUG-2774 Reviewed-by: Daniel Molkentin --- src/plugins/coreplugin/icore.h | 8 +++++++- src/plugins/coreplugin/mainwindow.cpp | 14 +++++++++----- .../gettingstartedwelcomepagewidget.cpp | 5 +++-- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index ad353f734c9..f6b31f33f34 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -119,7 +119,13 @@ public: virtual void addContextObject(IContext *context) = 0; virtual void removeContextObject(IContext *context) = 0; - enum OpenFilesFlags { None = 0, SwitchMode = 1, CanContainLineNumbers = 2}; + enum OpenFilesFlags { + None = 0, + SwitchMode = 1, + CanContainLineNumbers = 2, + /// Stop loading once the first file fails to load + StopOnLoadFail = 4 + }; virtual void openFiles(const QStringList &fileNames, OpenFilesFlags flags = None) = 0; signals: diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index 487976bb0c9..3737fb05fc8 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -829,16 +829,20 @@ void MainWindow::openFiles(const QStringList &fileNames, ICore::OpenFilesFlags f const QFileInfo fi(fileName); const QString absoluteFilePath = fi.absoluteFilePath(); if (IFileFactory *fileFactory = findFileFactory(nonEditorFileFactories, mimeDatabase(), fi)) { - fileFactory->open(absoluteFilePath); - if (flags && ICore::SwitchMode) + Core::IFile *file = fileFactory->open(absoluteFilePath); + if (!file && (flags & ICore::StopOnLoadFail)) + return; + if (file && (flags & ICore::SwitchMode)) Core::ModeManager::instance()->activateMode(Core::Constants::MODE_EDIT); } else { QFlags<EditorManager::OpenEditorFlag> emFlags; - if (flags && ICore::SwitchMode) + if (flags & ICore::SwitchMode) emFlags = EditorManager::ModeSwitch; - if (flags && ICore::CanContainLineNumbers) + if (flags & ICore::CanContainLineNumbers) emFlags |= EditorManager::CanContainLineNumber; - editorManager()->openEditor(absoluteFilePath, QString(), emFlags); + Core::IEditor *editor = editorManager()->openEditor(absoluteFilePath, QString(), emFlags); + if (!editor && (flags & ICore::StopOnLoadFail)) + return; } } } diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp index 1bbe67b45bc..50cccb88225 100644 --- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp +++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp @@ -33,6 +33,7 @@ #include <coreplugin/icore.h> #include <coreplugin/helpmanager.h> #include <coreplugin/coreconstants.h> +#include <coreplugin/editormanager/editormanager.h> #include <coreplugin/mainwindow.h> #include <coreplugin/rssfetcher.h> #include <projectexplorer/projectexplorer.h> @@ -329,8 +330,8 @@ void GettingStartedWelcomePageWidget::slotOpenExample() tryFile = proFileInfo.path() + '/' + proFileInfo.baseName() + ".qml"; if(QFile::exists(tryFile)) files << tryFile; - Core::ICore::instance()->openFiles(files, Core::ICore::SwitchMode); - if (!helpFile.isEmpty()) + Core::ICore::instance()->openFiles(files, static_cast<Core::ICore::OpenFilesFlags>(Core::ICore::SwitchMode | Core::ICore::StopOnLoadFail)); + if (!tryFile.isEmpty() && Core::EditorManager::instance()->hasEditor(tryFile) && !helpFile.isEmpty()) slotOpenContextHelpPage(helpFile); } -- GitLab