diff --git a/src/plugins/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp index 809823cd07b..2a048971791 100644 --- a/src/plugins/projectexplorer/outputwindow.cpp +++ b/src/plugins/projectexplorer/outputwindow.cpp @@ -257,9 +257,19 @@ void OutputPane::closeTab(int index) RunControl *rc = m_outputWindows.key(ow); if (rc->isRunning()) { - QString msg = tr("The application is still running. Close it first."); - QMessageBox::critical(0, tr("Unable to close"), msg); - return; + QMessageBox messageBox(QMessageBox::Warning, + tr("Unable to close"), + tr("The application is still running."), + QMessageBox::Cancel | QMessageBox::Yes, + ow->window()); + messageBox.setInformativeText(tr("Force it to quit?")); + messageBox.setDefaultButton(QMessageBox::Yes); + messageBox.button(QMessageBox::Yes)->setText(tr("Force Quit")); + + if (messageBox.exec() != QMessageBox::Yes) + return; + + rc->stop(); } m_tabWidget->removeTab(index); diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index cb38d2a32e9..ea563e4229d 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -162,7 +162,7 @@ public: explicit RunControl(RunConfiguration *runConfiguration); virtual ~RunControl(); virtual void start() = 0; - virtual void stop() = 0; + virtual void stop() = 0; // Warning: assumed to be synchroneous! virtual bool isRunning() const = 0; virtual QString displayName() const;