diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp index bde29975791..e0969dc8df7 100644 --- a/src/plugins/projectexplorer/appoutputpane.cpp +++ b/src/plugins/projectexplorer/appoutputpane.cpp @@ -101,7 +101,7 @@ void TabWidget::slotContextMenuRequested(const QPoint &pos) } AppOutputPane::RunControlTab::RunControlTab(RunControl *rc, Core::OutputWindow *w) : - runControl(rc), window(w), asyncClosing(false) + runControl(rc), window(w), asyncClosing(false), behavivorOnOutput(Flash) { } @@ -360,8 +360,16 @@ void AppOutputPane::updateFromSettings() void AppOutputPane::appendMessage(RunControl *rc, const QString &out, Utils::OutputFormat format) { const int index = indexOf(rc); - if (index != -1) - m_runControlTabs.at(index).window->appendMessage(out, format); + if (index != -1) { + Core::OutputWindow *window = m_runControlTabs.at(index).window; + window->appendMessage(out, format); + if (format != Utils::NormalMessageFormat) { + if (m_runControlTabs.at(index).behavivorOnOutput == Flash) + flash(); + else + popup(NoModeSwitch); + } + } } void AppOutputPane::showTabFor(RunControl *rc) @@ -369,6 +377,13 @@ void AppOutputPane::showTabFor(RunControl *rc) m_tabWidget->setCurrentIndex(tabWidgetIndexOf(indexOf(rc))); } +void AppOutputPane::setBehaviorOnOutput(RunControl *rc, AppOutputPane::BehavivorOnOutput mode) +{ + const int index = indexOf(rc); + if (index != -1) + m_runControlTabs[index].behavivorOnOutput = mode; +} + void AppOutputPane::reRunRunControl() { const int index = currentIndex(); diff --git a/src/plugins/projectexplorer/appoutputpane.h b/src/plugins/projectexplorer/appoutputpane.h index 1263a89585a..af9dc3fa0bb 100644 --- a/src/plugins/projectexplorer/appoutputpane.h +++ b/src/plugins/projectexplorer/appoutputpane.h @@ -60,6 +60,11 @@ public: CloseTabWithPrompt }; + enum BehavivorOnOutput { + Flash, + Popup + }; + AppOutputPane(); virtual ~AppOutputPane(); @@ -81,6 +86,7 @@ public: void createNewOutputWindow(RunControl *rc); void showTabFor(RunControl *rc); + void setBehaviorOnOutput(RunControl *rc, BehavivorOnOutput mode); bool aboutToClose() const; bool closeTabs(CloseTabMode mode); @@ -124,6 +130,7 @@ private: Core::OutputWindow *window; // Is the run control stopping asynchronously, close the tab once it finishes bool asyncClosing; + BehavivorOnOutput behavivorOnOutput; }; bool isRunning() const; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 16d9b6d8289..b1cd8b0a29a 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1685,12 +1685,12 @@ void ProjectExplorerPlugin::showRunErrorMessage(const QString &errorMessage) void ProjectExplorerPlugin::startRunControl(RunControl *runControl, RunMode runMode) { d->m_outputPane->createNewOutputWindow(runControl); - if (runMode == NormalRunMode && d->m_projectExplorerSettings.showRunOutput) - d->m_outputPane->popup(Core::IOutputPane::NoModeSwitch); - if ((runMode == DebugRunMode || runMode == DebugRunModeWithBreakOnMain) - && d->m_projectExplorerSettings.showDebugOutput) - d->m_outputPane->popup(Core::IOutputPane::NoModeSwitch); + d->m_outputPane->flash(); // one flash for starting d->m_outputPane->showTabFor(runControl); + bool popup = (runMode == NormalRunMode && d->m_projectExplorerSettings.showRunOutput) + || ((runMode == DebugRunMode || runMode == DebugRunModeWithBreakOnMain) + && d->m_projectExplorerSettings.showDebugOutput); + d->m_outputPane->setBehaviorOnOutput(runControl, popup ? AppOutputPane::Popup : AppOutputPane::Flash); connect(runControl, SIGNAL(finished()), this, SLOT(runControlFinished())); runControl->start(); emit updateRunActions(); diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.ui b/src/plugins/projectexplorer/projectexplorersettingspage.ui index c1b27df012b..9bfc39b131f 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.ui +++ b/src/plugins/projectexplorer/projectexplorersettingspage.ui @@ -113,7 +113,16 @@ - + + 0 + + + 0 + + + 0 + + 0 @@ -152,14 +161,14 @@ - Open application output pane when running + Open application output pane on output when running - Open application output pane when debugging + Open application output pane on output when debugging