diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index 3890c04b9c2fca2b928d87b1665e4538cf9ea0e2..355c3386fecc092b5cb2f10bcb73e6f0d1c57bd0 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -49,6 +49,7 @@ #include <projectexplorer/toolchain.h> #include <coreplugin/icore.h> +#include <coreplugin/mainwindow.h> #include <coreplugin/progressmanager/progressmanager.h> #include <coreplugin/messagemanager.h> #include <qtsupport/qtversionmanager.h> @@ -417,18 +418,14 @@ void QMakeStep::setLinkQmlDebuggingLibrary(bool enable) qt4BuildConfiguration()->emitQMakeBuildConfigurationChanged(); qt4BuildConfiguration()->emitProFileEvaluateNeeded(); - int button = QMessageBox::question(QApplication::activeWindow(), tr("QML Debugging"), - tr("The option will only take effect if the project is recompiled. Do you want to recompile now?"), - QMessageBox::Yes, QMessageBox::No); - - if (button == QMessageBox::Yes) { - Qt4BuildConfiguration *bc = qt4BuildConfiguration(); - - QList<ProjectExplorer::BuildStepList *> stepLists; - stepLists << bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN); - stepLists << bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); - ProjectExplorerPlugin::instance()->buildManager()->buildLists(stepLists); - } + Core::ICore * const core = Core::ICore::instance(); + QMessageBox *question = new QMessageBox(core->mainWindow()); + question->setWindowTitle(tr("QML Debugging")); + question->setText(tr("The option will only take effect if the project is recompiled. Do you want to recompile now?")); + question->setStandardButtons(QMessageBox::Yes | QMessageBox::No); + question->setModal(true); + connect(question, SIGNAL(finished(int)), this, SLOT(recompileMessageBoxFinished(int))); + question->show(); } QStringList QMakeStep::parserArguments() @@ -491,6 +488,20 @@ bool QMakeStep::fromMap(const QVariantMap &map) return BuildStep::fromMap(map); } +void QMakeStep::recompileMessageBoxFinished(int button) +{ + if (button == QMessageBox::Yes) { + Qt4BuildConfiguration *bc = qt4BuildConfiguration(); + if (!bc) + return; + + QList<ProjectExplorer::BuildStepList *> stepLists; + stepLists << bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN); + stepLists << bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); + ProjectExplorerPlugin::instance()->buildManager()->buildLists(stepLists); + } +} + //// // QMakeStepConfigWidget //// diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h index 2dfd631310b37538120079518d6933a619fa94b2..28a30434b6ebd616e4927be0dd50f21b10bf790f 100644 --- a/src/plugins/qt4projectmanager/qmakestep.h +++ b/src/plugins/qt4projectmanager/qmakestep.h @@ -115,6 +115,9 @@ signals: void userArgumentsChanged(); void linkQmlDebuggingLibraryChanged(); +private slots: + void recompileMessageBoxFinished(int button); + protected: QMakeStep(ProjectExplorer::BuildStepList *parent, QMakeStep *source); QMakeStep(ProjectExplorer::BuildStepList *parent, const QString &id);