Browse Source

Fixes for OSX Process::openDocument when launching bundles with parameters.

tags/2021-05-28
jules 12 years ago
parent
commit
e8d0c6d024
1 changed files with 29 additions and 26 deletions
  1. +29
    -26
      modules/juce_core/native/juce_mac_Files.mm

+ 29
- 26
modules/juce_core/native/juce_mac_Files.mm View File

@@ -393,43 +393,46 @@ bool DirectoryIterator::NativeIterator::next (String& filenameFound,
//==============================================================================
bool Process::openDocument (const String& fileName, const String& parameters)
{
#if JUCE_IOS
return [[UIApplication sharedApplication] openURL: [NSURL URLWithString: juceStringToNS (fileName)]];
#else
JUCE_AUTORELEASEPOOL
{
NSURL* filenameAsURL = [NSURL URLWithString: juceStringToNS (fileName)];
#if JUCE_IOS
return [[UIApplication sharedApplication] openURL: filenameAsURL];
#else
NSWorkspace* workspace = [NSWorkspace sharedWorkspace];
if (parameters.isEmpty())
{
return [[NSWorkspace sharedWorkspace] openFile: juceStringToNS (fileName)]
|| [[NSWorkspace sharedWorkspace] openURL: [NSURL URLWithString: juceStringToNS (fileName)]];
}
return [workspace openFile: juceStringToNS (fileName)]
|| [workspace openURL: filenameAsURL];
bool ok = false;
const File file (fileName);
if (file.isBundle())
{
NSMutableArray* urls = [NSMutableArray array];
StringArray docs;
docs.addTokens (parameters, true);
for (int i = 0; i < docs.size(); ++i)
[urls addObject: juceStringToNS (docs[i])];
ok = [[NSWorkspace sharedWorkspace] openURLs: urls
withAppBundleIdentifier: [[NSBundle bundleWithPath: juceStringToNS (fileName)] bundleIdentifier]
options: 0
additionalEventParamDescriptor: nil
launchIdentifiers: nil];
}
else if (file.exists())
{
ok = FileHelpers::launchExecutable ("\"" + fileName + "\" " + parameters);
StringArray params;
params.addTokens (parameters, true);
NSMutableArray* paramArray = [[[NSMutableArray alloc] init] autorelease];
for (int i = 0; i < params.size(); ++i)
[paramArray addObject: juceStringToNS (params[i])];
NSMutableDictionary* dict = [[[NSMutableDictionary alloc] init] autorelease];
[dict setObject: paramArray
forKey: NSWorkspaceLaunchConfigurationArguments];
return [workspace launchApplicationAtURL: filenameAsURL
options: NSWorkspaceLaunchDefault | NSWorkspaceLaunchNewInstance
configuration: dict
error: nil];
}
return ok;
if (file.exists())
return FileHelpers::launchExecutable ("\"" + fileName + "\" " + parameters);
return false;
#endif
}
#endif
}
void File::revealToUser() const


Loading…
Cancel
Save