From 16b6079895b32a6a7797d2e03ddc59b9965331ab Mon Sep 17 00:00:00 2001 From: Daniel Teske <daniel.teske@digia.com> Date: Tue, 12 Feb 2013 14:25:21 +0100 Subject: [PATCH] Open project from command line: Postpone the actual opening via a timer This feels better, should not break anything. Change-Id: Ibd0b8c20dce346e10cb7a35d6785ea2cb29f0e51 Reviewed-by: hjk <hjk121@nokiamail.com> --- src/plugins/projectexplorer/projectexplorer.cpp | 11 ++++++++++- src/plugins/projectexplorer/projectexplorer.h | 1 + src/plugins/projectexplorer/session.cpp | 4 ++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 5eefe2bc852..47f28445879 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -134,6 +134,7 @@ #include <QFileDialog> #include <QMenu> #include <QMessageBox> +#include <QTimer> #include <QWizard> /*! @@ -247,6 +248,7 @@ struct ProjectExplorerPluginPrivate { KitManager *m_kitManager; ToolChainManager *m_toolChainManager; bool m_shuttingDown; + QStringList m_arguments; }; ProjectExplorerPluginPrivate::ProjectExplorerPluginPrivate() : @@ -1597,10 +1599,17 @@ void ProjectExplorerPlugin::restoreSession() connect(d->m_welcomePage, SIGNAL(requestSession(QString)), this, SLOT(loadSession(QString))); connect(d->m_welcomePage, SIGNAL(requestProject(QString)), this, SLOT(openProjectWelcomePage(QString))); - Core::ICore::openFiles(arguments, Core::ICore::OpenFilesFlags(Core::ICore::CanContainLineNumbers | Core::ICore::SwitchMode)); + d->m_arguments = arguments; + QTimer::singleShot(0, this, SLOT(restoreSession2())); updateActions(); } +void ProjectExplorerPlugin::restoreSession2() +{ + QApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + Core::ICore::openFiles(d->m_arguments, Core::ICore::OpenFilesFlags(Core::ICore::CanContainLineNumbers | Core::ICore::SwitchMode)); +} + void ProjectExplorerPlugin::loadSession(const QString &session) { if (debug) diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index d85c784d76a..b8bbfee40e6 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -188,6 +188,7 @@ private slots: void determineSessionToRestoreAtStartup(); void restoreSession(); + void restoreSession2(); void loadSession(const QString &session); void runProject(); void runProjectWithoutDeploy(); diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index 75423af7869..a52c948f9c5 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -880,6 +880,10 @@ bool SessionManager::loadSession(const QString &session) m_future.setProgressRange(0, fileList.count() + openEditorsCount + 2); m_future.setProgressValue(1); + // if one processEvents doesn't get the job done + // just use two! + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); + QCoreApplication::processEvents(QEventLoop::ExcludeUserInputEvents); restoreProjects(fileList); sessionLoadingProgress(); restoreDependencies(reader); -- GitLab