| @@ -148,6 +148,10 @@ URL::URL (File localFile) | |||||
| if (localFile == File()) | if (localFile == File()) | ||||
| return; | return; | ||||
| #if JUCE_WINDOWS | |||||
| bool isUncPath = localFile.getFullPathName().startsWith ("\\\\"); | |||||
| #endif | |||||
| while (! localFile.isRoot()) | while (! localFile.isRoot()) | ||||
| { | { | ||||
| url = "/" + addEscapeChars (localFile.getFileName(), false) + url; | url = "/" + addEscapeChars (localFile.getFileName(), false) + url; | ||||
| @@ -156,8 +160,18 @@ URL::URL (File localFile) | |||||
| url = addEscapeChars (localFile.getFileName(), false) + url; | url = addEscapeChars (localFile.getFileName(), false) + url; | ||||
| if (! url.startsWithChar (L'/')) | |||||
| url = "/" + url; | |||||
| #if JUCE_WINDOWS | |||||
| if (isUncPath) | |||||
| { | |||||
| url = url.fromFirstOccurrenceOf ("/", false, false); | |||||
| } | |||||
| else | |||||
| #endif | |||||
| { | |||||
| if (! url.startsWithChar (L'/')) | |||||
| url = "/" + url; | |||||
| } | |||||
| url = "file://" + url; | url = "file://" + url; | ||||
| @@ -381,7 +395,9 @@ File URL::fileFromFileSchemeURL (const URL& fileURL) | |||||
| auto path = removeEscapeChars (fileURL.getDomain()).replace ("+", "%2B"); | auto path = removeEscapeChars (fileURL.getDomain()).replace ("+", "%2B"); | ||||
| #ifndef JUCE_WINDOWS | |||||
| #ifdef JUCE_WINDOWS | |||||
| bool isUncPath = (! fileURL.url.startsWith ("file:///")); | |||||
| #else | |||||
| path = File::getSeparatorString() + path; | path = File::getSeparatorString() + path; | ||||
| #endif | #endif | ||||
| @@ -390,6 +406,11 @@ File URL::fileFromFileSchemeURL (const URL& fileURL) | |||||
| for (auto urlElement : urlElements) | for (auto urlElement : urlElements) | ||||
| path += File::getSeparatorString() + removeEscapeChars (urlElement.replace ("+", "%2B")); | path += File::getSeparatorString() + removeEscapeChars (urlElement.replace ("+", "%2B")); | ||||
| #ifdef JUCE_WINDOWS | |||||
| if (isUncPath) | |||||
| path = "\\\\" + path; | |||||
| #endif | |||||
| return path; | return path; | ||||
| } | } | ||||