From cc8a9ca8960865281c9e4be82027cbe4ecfea995 Mon Sep 17 00:00:00 2001 From: reuk Date: Thu, 18 Nov 2021 19:37:38 +0000 Subject: [PATCH] FileChooser: Avoid deprecated delegate method signature --- .../native/juce_mac_FileChooser.mm | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/modules/juce_gui_basics/native/juce_mac_FileChooser.mm b/modules/juce_gui_basics/native/juce_mac_FileChooser.mm index c3565d557b..a7c2a1aa47 100644 --- a/modules/juce_gui_basics/native/juce_mac_FileChooser.mm +++ b/modules/juce_gui_basics/native/juce_mac_FileChooser.mm @@ -213,6 +213,18 @@ private: //============================================================================== typedef NSObject DelegateType; + static URL urlFromNSURL (NSURL* url) + { + const auto scheme = nsStringToJuce ([url scheme]); + + auto pathComponents = StringArray::fromTokens (nsStringToJuce ([url path]), "/", {}); + + for (auto& component : pathComponents) + component = URL::addEscapeChars (component, false); + + return { scheme + "://" + pathComponents.joinIntoString ("/") }; + } + void finished (NSInteger result) { Array chooserResults; @@ -233,13 +245,7 @@ private: { auto addURLResult = [&chooserResults] (NSURL* urlToAdd) { - auto scheme = nsStringToJuce ([urlToAdd scheme]); - auto pathComponents = StringArray::fromTokens (nsStringToJuce ([urlToAdd path]), "/", {}); - - for (auto& component : pathComponents) - component = URL::addEscapeChars (component, false); - - chooserResults.add (URL (scheme + "://" + pathComponents.joinIntoString ("/"))); + chooserResults.add (urlFromNSURL (urlToAdd)); }; if (isSave) @@ -259,17 +265,15 @@ private: owner.finished (chooserResults); } - bool shouldShowFilename (const String& filenameToTest) + BOOL shouldShowURL (const URL& urlToTest) { - const File f (filenameToTest); - auto nsFilename = juceStringToNS (filenameToTest); - for (int i = filters.size(); --i >= 0;) - if (f.getFileName().matchesWildcard (filters[i], true)) - return true; + if (urlToTest.getFileName().matchesWildcard (filters[i], true)) + return YES; + const auto f = urlToTest.getLocalFile(); return f.isDirectory() - && ! [[NSWorkspace sharedWorkspace] isFilePackageAtPath: nsFilename]; + && ! [[NSWorkspace sharedWorkspace] isFilePackageAtPath: juceStringToNS (f.getFullPathName())]; } void panelSelectionDidChange (id sender) @@ -359,8 +363,8 @@ private: { addIvar ("cppObject"); - addMethod (@selector (panel:shouldShowFilename:), shouldShowFilename); - addMethod (@selector (panelSelectionDidChange:), panelSelectionDidChange); + addMethod (@selector (panel:shouldEnableURL:), shouldEnableURL); + addMethod (@selector (panelSelectionDidChange:), panelSelectionDidChange); addProtocol (@protocol (NSOpenSavePanelDelegate)); @@ -368,18 +372,14 @@ private: } private: - static BOOL shouldShowFilename (id self, SEL, id /*sender*/, NSString* filename) + static BOOL shouldEnableURL (id self, SEL, id /*sender*/, NSURL* url) { - auto* _this = getIvar (self, "cppObject"); - - return _this->shouldShowFilename (nsStringToJuce (filename)) ? YES : NO; + return getIvar (self, "cppObject")->shouldShowURL (urlFromNSURL (url)); } static void panelSelectionDidChange (id self, SEL, id sender) { - auto* _this = getIvar (self, "cppObject"); - - _this->panelSelectionDidChange (sender); + getIvar (self, "cppObject")->panelSelectionDidChange (sender); } };