seanpaultaylor %!s(int64=11) %!d(string=hai) anos
pai
achega
08c391e9b4
Modificáronse 1 ficheiros con 7 adicións e 9 borrados
  1. 7 9
      gameplay/src/PlatformWindows.cpp

+ 7 - 9
gameplay/src/PlatformWindows.cpp

@@ -1368,22 +1368,22 @@ bool Platform::launchURL(const char* url)
 
 
 std::string Platform::displayFileDialog(size_t mode, const char* title, const char* filterDescription, const char* filterExtensions, const char* initialDirectory)
 std::string Platform::displayFileDialog(size_t mode, const char* title, const char* filterDescription, const char* filterExtensions, const char* initialDirectory)
 {
 {
-    char currentDir[512];
-    GetCurrentDirectoryA(512, currentDir);
-
     std::string filename;
     std::string filename;
     OPENFILENAMEA ofn;
     OPENFILENAMEA ofn;
     memset(&ofn, 0, sizeof(ofn));
     memset(&ofn, 0, sizeof(ofn));
 
 
-    // Set initial directory
+    char currentDir[1024];
+    char absPath[1024];
     std::string initialDirectoryStr;
     std::string initialDirectoryStr;
     if (initialDirectory == NULL)
     if (initialDirectory == NULL)
     {
     {
+        GetCurrentDirectoryA(1024, currentDir);
         initialDirectoryStr = currentDir;
         initialDirectoryStr = currentDir;
     }
     }
     else
     else
     {
     {
-        initialDirectoryStr = initialDirectory;
+        GetFullPathNameA(initialDirectory, 1024, absPath, 0);
+        initialDirectoryStr = absPath;
     }
     }
 
 
     // Filter on extensions
     // Filter on extensions
@@ -1408,14 +1408,14 @@ std::string Platform::displayFileDialog(size_t mode, const char* title, const ch
     strcpy(filter, descStr.c_str());
     strcpy(filter, descStr.c_str());
     strcpy(filter + descStr.length() + 1, extStr.c_str());
     strcpy(filter + descStr.length() + 1, extStr.c_str());
 
 
-    char szFileName[512] = "";
+    char szFileName[1024] = "";
     ofn.lpstrFile = szFileName;
     ofn.lpstrFile = szFileName;
     ofn.lStructSize = sizeof(ofn);
     ofn.lStructSize = sizeof(ofn);
     ofn.hwndOwner = GetForegroundWindow();
     ofn.hwndOwner = GetForegroundWindow();
     ofn.lpstrTitle = title;
     ofn.lpstrTitle = title;
     ofn.lpstrFilter = filter;
     ofn.lpstrFilter = filter;
     ofn.lpstrInitialDir = initialDirectoryStr.c_str();
     ofn.lpstrInitialDir = initialDirectoryStr.c_str();
-    ofn.nMaxFile = 512;
+    ofn.nMaxFile = 1024;
     ofn.lpstrDefExt = filter;
     ofn.lpstrDefExt = filter;
 
 
     if (mode == FileSystem::OPEN)
     if (mode == FileSystem::OPEN)
@@ -1430,8 +1430,6 @@ std::string Platform::displayFileDialog(size_t mode, const char* title, const ch
     }
     }
 
 
     filename = szFileName;
     filename = szFileName;
-        
-    SetCurrentDirectoryA(currentDir);
 
 
     return filename;
     return filename;
 }
 }