]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/filesys.cpp
document On{Open,Save}Document()
[wxWidgets.git] / src / common / filesys.cpp
index db370fd11a9ccb4536a7aeb6448cf0ebb0330aab..71dc13788b64e584e8970e1a8ceadd764827c200 100644 (file)
@@ -661,8 +661,18 @@ wxString wxFileSystem::FileNameToURL(const wxFileName& filename)
 #endif
 
     url.Replace(g_nativePathString, g_unixPathString);
+    url.Replace(wxT("%"), wxT("%25")); // '%'s must be replaced first!
     url.Replace(wxT("#"), wxT("%23"));
-    url.Replace(wxT("%"), wxT("%25"));
+
+    // notice that all colons *must* be encoded in the paths used by
+    // wxFileSystem even though this makes URLs produced by this method
+    // unusable with IE under Windows as it requires "file:///c:/foo.bar" and
+    // doesn't accept "file:///c%3a/foo.bar" -- but then we never made any
+    // guarantees about general suitability of the strings returned by this
+    // method, they must work with wxFileSystem only and not encoding the colon
+    // breaks handling of "http://wherever/whatever.zip#zip:filename.ext" URLs
+    // so we really can't do this without heavy changes to the parsing code
+    // here, in particular in GetRightLocation()
     url.Replace(wxT(":"), wxT("%3A"));
     url = wxT("file:") + url;
     return url;