From a2c612c170d3ce7568858257b519bd697f798fab Mon Sep 17 00:00:00 2001 From: Kai Koehne <kai.koehne@nokia.com> Date: Tue, 19 Jul 2011 16:03:42 +0200 Subject: [PATCH] QMakeStep: Allow UI to update when asking user whether to recompile Makes sure that the warning about security implications are visible before the user answers whether to recompile. Task-number: QTCREATORBUG-5411 Change-Id: I43fe6aeb9e24d25be4fb51f356b6238ce0cd3924 Reviewed-on: http://codereview.qt.nokia.com/1832 Reviewed-by: Daniel Teske <daniel.teske@nokia.com> --- src/plugins/qt4projectmanager/qmakestep.cpp | 35 ++++++++++++++------- src/plugins/qt4projectmanager/qmakestep.h | 3 ++ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index 3890c04b9c2..355c3386fec 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 2dfd631310b..28a30434b6e 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); -- GitLab