ENH: Move SetErrorMode around calls to generate and configure instead of setting it for the whole application.

This commit is contained in:
Clinton Stimpson 2009-10-26 13:18:15 -04:00
parent 6e3dd78b8b
commit 0b8837814a
2 changed files with 21 additions and 9 deletions

View File

@ -16,11 +16,6 @@
#include <QTranslator> #include <QTranslator>
#include <QLocale> #include <QLocale>
#include "QMacInstallDialog.h" #include "QMacInstallDialog.h"
#ifdef Q_OS_WIN
#include "windows.h" // for SetErrorMode
#endif
#include "CMakeSetupDialog.h" #include "CMakeSetupDialog.h"
#include "cmDocumentation.h" #include "cmDocumentation.h"
#include "cmake.h" #include "cmake.h"
@ -103,10 +98,6 @@ int main(int argc, char** argv)
} }
QApplication app(argc, argv); QApplication app(argc, argv);
#ifdef Q_OS_WIN
// QApplication changes error mode, let's put it back
SetErrorMode(0);
#endif
// clean out standard Qt paths for plugins, which we don't use anyway // clean out standard Qt paths for plugins, which we don't use anyway
// when creating Mac bundles, it potentially causes problems // when creating Mac bundles, it potentially causes problems

View File

@ -20,6 +20,10 @@
#include "cmSystemTools.h" #include "cmSystemTools.h"
#include "cmExternalMakefileProjectGenerator.h" #include "cmExternalMakefileProjectGenerator.h"
#ifdef Q_OS_WIN
#include "qt_windows.h" // For SetErrorMode
#endif
QCMake::QCMake(QObject* p) QCMake::QCMake(QObject* p)
: QObject(p) : QObject(p)
{ {
@ -148,6 +152,10 @@ void QCMake::setGenerator(const QString& gen)
void QCMake::configure() void QCMake::configure()
{ {
#ifdef Q_OS_WIN
UINT lastErrorMode = SetErrorMode(0);
#endif
this->CMakeInstance->SetHomeDirectory(this->SourceDirectory.toAscii().data()); this->CMakeInstance->SetHomeDirectory(this->SourceDirectory.toAscii().data());
this->CMakeInstance->SetStartDirectory(this->SourceDirectory.toAscii().data()); this->CMakeInstance->SetStartDirectory(this->SourceDirectory.toAscii().data());
this->CMakeInstance->SetHomeOutputDirectory(this->BinaryDirectory.toAscii().data()); this->CMakeInstance->SetHomeOutputDirectory(this->BinaryDirectory.toAscii().data());
@ -162,14 +170,27 @@ void QCMake::configure()
int err = this->CMakeInstance->Configure(); int err = this->CMakeInstance->Configure();
#ifdef Q_OS_WIN
SetErrorMode(lastErrorMode);
#endif
emit this->propertiesChanged(this->properties()); emit this->propertiesChanged(this->properties());
emit this->configureDone(err); emit this->configureDone(err);
} }
void QCMake::generate() void QCMake::generate()
{ {
#ifdef Q_OS_WIN
UINT lastErrorMode = SetErrorMode(0);
#endif
cmSystemTools::ResetErrorOccuredFlag(); cmSystemTools::ResetErrorOccuredFlag();
int err = this->CMakeInstance->Generate(); int err = this->CMakeInstance->Generate();
#ifdef Q_OS_WIN
SetErrorMode(lastErrorMode);
#endif
emit this->generateDone(err); emit this->generateDone(err);
} }