Bläddra i källkod

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

Clinton Stimpson 16 år sedan
förälder
incheckning
0b8837814a
2 ändrade filer med 21 tillägg och 9 borttagningar
  1. 0 9
      Source/QtDialog/CMakeSetup.cxx
  2. 21 0
      Source/QtDialog/QCMake.cxx

+ 0 - 9
Source/QtDialog/CMakeSetup.cxx

@@ -16,11 +16,6 @@
 #include <QTranslator>
 #include <QLocale>
 #include "QMacInstallDialog.h"
-
-#ifdef Q_OS_WIN
-#include "windows.h"  // for SetErrorMode
-#endif
-
 #include "CMakeSetupDialog.h"
 #include "cmDocumentation.h"
 #include "cmake.h"
@@ -103,10 +98,6 @@ int main(int argc, char** 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
   // when creating Mac bundles, it potentially causes problems

+ 21 - 0
Source/QtDialog/QCMake.cxx

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