diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index 9ab4421ff4b..e70f93a707e 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -45,6 +45,7 @@ #include #include +#include #include #include @@ -922,10 +923,29 @@ void RunControlPrivate::onWorkerFailed(RunWorker *worker, const QString &msg) worker->d->state = RunWorkerState::Done; showError(msg); - if (state == RunControlState::Running || state == RunControlState::Starting) - initiateStop(); - else + switch (state) { + case RunControlState::Initialized: + // FIXME 1: We don't have an output pane yet, so use some other mechanism for now. + // FIXME 2: Translation... + QMessageBox::critical(Core::ICore::dialogParent(), + QCoreApplication::translate("TaskHub", "Error"), + QString("Failure during startup. Aborting.") + "

" + msg); continueStopOrFinish(); + break; + case RunControlState::Starting: + case RunControlState::Running: + initiateStop(); + break; + case RunControlState::Stopping: + case RunControlState::Finishing: + continueStopOrFinish(); + break; + case RunControlState::Stopped: + case RunControlState::Finished: + QTC_CHECK(false); // Should not happen. + continueStopOrFinish(); + break; + } } void RunControlPrivate::onWorkerStopped(RunWorker *worker)