diff --git a/src/plugins/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp index 809823cd07b3614d47d3c808408f9ae08542e8a9..2a048971791555b2bc22219796931e2d358ccb7f 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 cb38d2a32e9b02ebf505bcdde54f87621457ee9c..ea563e4229d11364df008c4f7d04242423be77ec 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;