summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/MFCDialog/CMakeSetupDialog.cpp33
1 files changed, 29 insertions, 4 deletions
diff --git a/Source/MFCDialog/CMakeSetupDialog.cpp b/Source/MFCDialog/CMakeSetupDialog.cpp
index 73d9a8c..40d7016 100644
--- a/Source/MFCDialog/CMakeSetupDialog.cpp
+++ b/Source/MFCDialog/CMakeSetupDialog.cpp
@@ -19,6 +19,31 @@
static char THIS_FILE[] = __FILE__;
#endif
+// Convert to Win32 path (slashes). But it's not in cmSystemTools, so
+// the 2 billions people that are using the CMake API can not mistake
+// it with cmMakeMyCoffeeButNoSugarPlease().
+
+std::string ConvertToWindowsPath(const char* path)
+{
+ // Convert to output path.
+ // Remove the "" around it (if any) since it's an output path for
+ // the shell. If another shell-oriented feature is not designed
+ // for a GUI use, then we are in trouble.
+
+ std::string s = cmSystemTools::ConvertToOutputPath(path);
+ std::string::iterator i = s.begin();
+ if (*i == '\"')
+ {
+ s.erase(i, i + 1);
+ }
+ i = s.begin() + s.length() - 1;
+ if (*i == '\"')
+ {
+ s.erase(i, i + 1);
+ }
+ return s;
+}
+
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
@@ -622,7 +647,7 @@ void CMakeSetupDialog::OnChangeWhereBuild()
cache->LoadCache(path.c_str()) &&
cache->GetCacheEntry("CMAKE_HOME_DIRECTORY"))
{
- path = cmSystemTools::ConvertToOutputPath(
+ path = ConvertToWindowsPath(
cache->GetCacheEntry("CMAKE_HOME_DIRECTORY")->m_Value.c_str());
this->m_WhereSource = path.c_str();
this->m_WhereSourceControl.SetWindowText(this->m_WhereSource);
@@ -1219,16 +1244,16 @@ void CMakeSetupDialog::ChangeDirectoriesFromFile(const char* buffer)
cache->LoadCache(path.c_str()) &&
cache->GetCacheEntry("CMAKE_HOME_DIRECTORY"))
{
- path = cmSystemTools::ConvertToOutputPath(path.c_str());
+ path = ConvertToWindowsPath(path.c_str());
this->m_WhereBuild = path.c_str();
- path = cmSystemTools::ConvertToOutputPath(
+ path = ConvertToWindowsPath(
cache->GetCacheEntry("CMAKE_HOME_DIRECTORY")->m_Value.c_str());
this->m_WhereSource = path.c_str();
}
else
{
- path = cmSystemTools::ConvertToOutputPath(path.c_str());
+ path = ConvertToWindowsPath(path.c_str());
this->m_WhereSource = this->m_WhereBuild = path.c_str();
}
}