| @@ -285,13 +285,17 @@ bool File::moveToTrash() const | |||||
| JUCE_AUTORELEASEPOOL | JUCE_AUTORELEASEPOOL | ||||
| { | { | ||||
| #if (defined (__IPHONE_11_0) && __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_11_0) \ | |||||
| || (defined (MAC_OS_X_VERSION_10_8) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8) | |||||
| NSError* error = nil; | |||||
| return [[NSFileManager defaultManager] trashItemAtURL: createNSURLFromFile (*this) | |||||
| resultingItemURL: nil | |||||
| error: &error]; | |||||
| #elif JUCE_IOS | |||||
| #if JUCE_MAC || (JUCE_IOS && (defined (__IPHONE_11_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_0)) | |||||
| if (@available (macOS 10.8, iOS 11.0, *)) | |||||
| { | |||||
| NSError* error = nil; | |||||
| return [[NSFileManager defaultManager] trashItemAtURL: createNSURLFromFile (*this) | |||||
| resultingItemURL: nil | |||||
| error: &error]; | |||||
| } | |||||
| #endif | |||||
| #if JUCE_IOS | |||||
| return deleteFile(); | return deleteFile(); | ||||
| #else | #else | ||||
| [[NSWorkspace sharedWorkspace] recycleURLs: [NSArray arrayWithObject: createNSURLFromFile (*this)] | [[NSWorkspace sharedWorkspace] recycleURLs: [NSArray arrayWithObject: createNSURLFromFile (*this)] | ||||
| @@ -159,20 +159,30 @@ namespace CoreTextTypeLayout | |||||
| //============================================================================== | //============================================================================== | ||||
| static CTTextAlignment getTextAlignment (const AttributedString& text) | static CTTextAlignment getTextAlignment (const AttributedString& text) | ||||
| { | { | ||||
| switch (text.getJustification().getOnlyHorizontalFlags()) | |||||
| const auto flags = text.getJustification().getOnlyHorizontalFlags(); | |||||
| if (@available (macOS 10.8, *)) | |||||
| { | |||||
| switch (flags) | |||||
| { | |||||
| case Justification::right: return kCTTextAlignmentRight; | |||||
| case Justification::horizontallyCentred: return kCTTextAlignmentCenter; | |||||
| case Justification::horizontallyJustified: return kCTTextAlignmentJustified; | |||||
| default: return kCTTextAlignmentLeft; | |||||
| } | |||||
| } | |||||
| JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations") | |||||
| switch (flags) | |||||
| { | { | ||||
| #if defined (MAC_OS_X_VERSION_10_8) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_8 | |||||
| case Justification::right: return kCTTextAlignmentRight; | |||||
| case Justification::horizontallyCentred: return kCTTextAlignmentCenter; | |||||
| case Justification::horizontallyJustified: return kCTTextAlignmentJustified; | |||||
| default: return kCTTextAlignmentLeft; | |||||
| #else | |||||
| case Justification::right: return kCTRightTextAlignment; | case Justification::right: return kCTRightTextAlignment; | ||||
| case Justification::horizontallyCentred: return kCTCenterTextAlignment; | case Justification::horizontallyCentred: return kCTCenterTextAlignment; | ||||
| case Justification::horizontallyJustified: return kCTJustifiedTextAlignment; | case Justification::horizontallyJustified: return kCTJustifiedTextAlignment; | ||||
| default: return kCTLeftTextAlignment; | default: return kCTLeftTextAlignment; | ||||
| #endif | |||||
| } | } | ||||
| JUCE_END_IGNORE_WARNINGS_GCC_LIKE | |||||
| } | } | ||||
| static CTLineBreakMode getLineBreakMode (const AttributedString& text) | static CTLineBreakMode getLineBreakMode (const AttributedString& text) | ||||
| @@ -572,10 +582,8 @@ public: | |||||
| if (fontRef != nullptr) | if (fontRef != nullptr) | ||||
| { | { | ||||
| #if JUCE_MAC && defined (MAC_OS_X_VERSION_10_8) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8 | |||||
| if (SystemStats::getOperatingSystemType() >= SystemStats::OperatingSystemType::MacOSX_10_11) | |||||
| if (@available (macOS 10.11, *)) | |||||
| canBeUsedForLayout = CTFontManagerRegisterGraphicsFont (fontRef, nullptr); | canBeUsedForLayout = CTFontManagerRegisterGraphicsFont (fontRef, nullptr); | ||||
| #endif | |||||
| ctFontRef.reset (CTFontCreateWithGraphicsFont (fontRef, referenceFontSize, nullptr, nullptr)); | ctFontRef.reset (CTFontCreateWithGraphicsFont (fontRef, referenceFontSize, nullptr, nullptr)); | ||||
| @@ -618,10 +626,9 @@ public: | |||||
| { | { | ||||
| if (fontRef != nullptr) | if (fontRef != nullptr) | ||||
| { | { | ||||
| #if JUCE_MAC && defined (MAC_OS_X_VERSION_10_8) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8 | |||||
| if (dataCopy.getSize() != 0) | |||||
| CTFontManagerUnregisterGraphicsFont (fontRef, nullptr); | |||||
| #endif | |||||
| if (@available (macOS 10.8, *)) | |||||
| if (dataCopy.getSize() != 0) | |||||
| CTFontManagerUnregisterGraphicsFont (fontRef, nullptr); | |||||
| CGFontRelease (fontRef); | CGFontRelease (fontRef); | ||||
| } | } | ||||
| @@ -33,12 +33,6 @@ namespace juce | |||||
| using NSAccessibilityNotificationName = NSString*; | using NSAccessibilityNotificationName = NSString*; | ||||
| #endif | #endif | ||||
| #if (! defined MAC_OS_X_VERSION_10_9) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_9 | |||||
| const NSAccessibilityNotificationName NSAccessibilityLayoutChangedNotificationJuce = @"AXLayoutChanged"; | |||||
| #else | |||||
| const NSAccessibilityNotificationName NSAccessibilityLayoutChangedNotificationJuce = NSAccessibilityLayoutChangedNotification; | |||||
| #endif | |||||
| #define JUCE_NATIVE_ACCESSIBILITY_INCLUDED 1 | #define JUCE_NATIVE_ACCESSIBILITY_INCLUDED 1 | ||||
| JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunguarded-availability", "-Wunguarded-availability-new") | JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunguarded-availability", "-Wunguarded-availability-new") | ||||
| @@ -887,6 +881,15 @@ static void sendHandlerNotification (const AccessibilityHandler& handler, | |||||
| } | } | ||||
| } | } | ||||
| static NSAccessibilityNotificationName layoutChangedNotification() | |||||
| { | |||||
| if (@available (macOS 10.9, *)) | |||||
| return NSAccessibilityLayoutChangedNotification; | |||||
| static NSString* layoutChangedString = @"AXLayoutChanged"; | |||||
| return layoutChangedString; | |||||
| } | |||||
| void notifyAccessibilityEventInternal (const AccessibilityHandler& handler, InternalAccessibilityEvent eventType) | void notifyAccessibilityEventInternal (const AccessibilityHandler& handler, InternalAccessibilityEvent eventType) | ||||
| { | { | ||||
| auto notification = [eventType] | auto notification = [eventType] | ||||
| @@ -895,7 +898,7 @@ void notifyAccessibilityEventInternal (const AccessibilityHandler& handler, Inte | |||||
| { | { | ||||
| case InternalAccessibilityEvent::elementCreated: return NSAccessibilityCreatedNotification; | case InternalAccessibilityEvent::elementCreated: return NSAccessibilityCreatedNotification; | ||||
| case InternalAccessibilityEvent::elementDestroyed: return NSAccessibilityUIElementDestroyedNotification; | case InternalAccessibilityEvent::elementDestroyed: return NSAccessibilityUIElementDestroyedNotification; | ||||
| case InternalAccessibilityEvent::elementMovedOrResized: return NSAccessibilityLayoutChangedNotificationJuce; | |||||
| case InternalAccessibilityEvent::elementMovedOrResized: return layoutChangedNotification(); | |||||
| case InternalAccessibilityEvent::focusChanged: return NSAccessibilityFocusedUIElementChangedNotification; | case InternalAccessibilityEvent::focusChanged: return NSAccessibilityFocusedUIElementChangedNotification; | ||||
| case InternalAccessibilityEvent::windowOpened: return NSAccessibilityWindowCreatedNotification; | case InternalAccessibilityEvent::windowOpened: return NSAccessibilityWindowCreatedNotification; | ||||
| case InternalAccessibilityEvent::windowClosed: break; | case InternalAccessibilityEvent::windowClosed: break; | ||||
| @@ -919,7 +922,7 @@ void AccessibilityHandler::notifyAccessibilityEvent (AccessibilityEvent eventTyp | |||||
| case AccessibilityEvent::textChanged: | case AccessibilityEvent::textChanged: | ||||
| case AccessibilityEvent::valueChanged: return NSAccessibilityValueChangedNotification; | case AccessibilityEvent::valueChanged: return NSAccessibilityValueChangedNotification; | ||||
| case AccessibilityEvent::titleChanged: return NSAccessibilityTitleChangedNotification; | case AccessibilityEvent::titleChanged: return NSAccessibilityTitleChangedNotification; | ||||
| case AccessibilityEvent::structureChanged: return NSAccessibilityLayoutChangedNotificationJuce; | |||||
| case AccessibilityEvent::structureChanged: return layoutChangedNotification(); | |||||
| } | } | ||||
| return NSAccessibilityNotificationName{}; | return NSAccessibilityNotificationName{}; | ||||
| @@ -219,12 +219,15 @@ private: | |||||
| exitModalState (0); | exitModalState (0); | ||||
| if (panel != nil && result == | |||||
| #if defined (MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9 | |||||
| NSModalResponseOK) | |||||
| #else | |||||
| NSFileHandlingPanelOKButton) | |||||
| #endif | |||||
| const auto okResult = []() -> NSInteger | |||||
| { | |||||
| if (@available (macOS 10.9, *)) | |||||
| return NSModalResponseOK; | |||||
| return NSFileHandlingPanelOKButton; | |||||
| }(); | |||||
| if (panel != nil && result == okResult) | |||||
| { | { | ||||
| auto addURLResult = [&chooserResults] (NSURL* urlToAdd) | auto addURLResult = [&chooserResults] (NSURL* urlToAdd) | ||||
| { | { | ||||
| @@ -364,11 +364,18 @@ private: | |||||
| { | { | ||||
| NSArray* array = nil; | NSArray* array = nil; | ||||
| #if (! defined (MAC_OS_X_VERSION_10_8)) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8 | |||||
| [menuNib instantiateNibWithOwner: NSApp topLevelObjects: &array]; | |||||
| #else | |||||
| [menuNib instantiateWithOwner: NSApp topLevelObjects: &array]; | |||||
| #endif | |||||
| if (@available (macOS 10.11, *)) | |||||
| { | |||||
| [menuNib instantiateWithOwner: NSApp | |||||
| topLevelObjects: &array]; | |||||
| } | |||||
| else | |||||
| { | |||||
| JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations") | |||||
| [menuNib instantiateNibWithOwner: NSApp | |||||
| topLevelObjects: &array]; | |||||
| JUCE_END_IGNORE_WARNINGS_GCC_LIKE | |||||
| } | |||||
| for (id object in array) | for (id object in array) | ||||
| { | { | ||||
| @@ -70,12 +70,14 @@ public: | |||||
| [view setPostsFrameChangedNotifications: YES]; | [view setPostsFrameChangedNotifications: YES]; | ||||
| #if defined (MAC_OS_X_VERSION_10_8) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8) \ | |||||
| && USE_COREGRAPHICS_RENDERING && JUCE_COREGRAPHICS_DRAW_ASYNC | |||||
| #if USE_COREGRAPHICS_RENDERING && JUCE_COREGRAPHICS_DRAW_ASYNC | |||||
| if (! getComponentAsyncLayerBackedViewDisabled (component)) | if (! getComponentAsyncLayerBackedViewDisabled (component)) | ||||
| { | { | ||||
| [view setWantsLayer: YES]; | |||||
| [[view layer] setDrawsAsynchronously: YES]; | |||||
| if (@available (macOS 10.8, *)) | |||||
| { | |||||
| [view setWantsLayer: YES]; | |||||
| [[view layer] setDrawsAsynchronously: YES]; | |||||
| } | |||||
| } | } | ||||
| #endif | #endif | ||||
| @@ -107,9 +109,8 @@ public: | |||||
| if (! [window isOpaque]) | if (! [window isOpaque]) | ||||
| [window setBackgroundColor: [NSColor clearColor]]; | [window setBackgroundColor: [NSColor clearColor]]; | ||||
| #if defined (MAC_OS_X_VERSION_10_9) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9) | |||||
| [view setAppearance: [NSAppearance appearanceNamed: NSAppearanceNameAqua]]; | |||||
| #endif | |||||
| if (@available (macOS 10.9, *)) | |||||
| [view setAppearance: [NSAppearance appearanceNamed: NSAppearanceNameAqua]]; | |||||
| [window setHasShadow: ((windowStyleFlags & windowHasDropShadow) != 0)]; | [window setHasShadow: ((windowStyleFlags & windowHasDropShadow) != 0)]; | ||||
| @@ -851,12 +852,13 @@ public: | |||||
| if (r.size.width < 1.0f || r.size.height < 1.0f) | if (r.size.width < 1.0f || r.size.height < 1.0f) | ||||
| return; | return; | ||||
| auto cg = (CGContextRef) [[NSGraphicsContext currentContext] | |||||
| #if (defined (MAC_OS_X_VERSION_10_10) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10) | |||||
| CGContext]; | |||||
| #else | |||||
| graphicsPort]; | |||||
| #endif | |||||
| auto cg = [] | |||||
| { | |||||
| if (@available (macOS 10.10, *)) | |||||
| return (CGContextRef) [[NSGraphicsContext currentContext] CGContext]; | |||||
| return (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort]; | |||||
| }(); | |||||
| if (! component.isOpaque()) | if (! component.isOpaque()) | ||||
| CGContextClearRect (cg, CGContextGetClipBoundingBox (cg)); | CGContextClearRect (cg, CGContextGetClipBoundingBox (cg)); | ||||
| @@ -577,13 +577,12 @@ static void selectImageForDrawing (const Image& image) | |||||
| { | { | ||||
| [NSGraphicsContext saveGraphicsState]; | [NSGraphicsContext saveGraphicsState]; | ||||
| #if (defined (MAC_OS_X_VERSION_10_10) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10) | |||||
| [NSGraphicsContext setCurrentContext: [NSGraphicsContext graphicsContextWithCGContext: juce_getImageContext (image) | |||||
| flipped: false]]; | |||||
| #else | |||||
| [NSGraphicsContext setCurrentContext: [NSGraphicsContext graphicsContextWithGraphicsPort: juce_getImageContext (image) | |||||
| flipped: false]]; | |||||
| #endif | |||||
| if (@available (macOS 10.10, *)) | |||||
| [NSGraphicsContext setCurrentContext: [NSGraphicsContext graphicsContextWithCGContext: juce_getImageContext (image) | |||||
| flipped: false]]; | |||||
| else | |||||
| [NSGraphicsContext setCurrentContext: [NSGraphicsContext graphicsContextWithGraphicsPort: juce_getImageContext (image) | |||||
| flipped: false]]; | |||||
| } | } | ||||
| static void releaseImageAfterDrawing() | static void releaseImageAfterDrawing() | ||||
| @@ -27,41 +27,37 @@ namespace juce | |||||
| { | { | ||||
| #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_10) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10) | #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_10) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10) | ||||
| #define JUCE_USE_WKWEBVIEW 1 | #define JUCE_USE_WKWEBVIEW 1 | ||||
| #endif | |||||
| #if (defined (MAC_OS_X_VERSION_10_11) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11) | |||||
| #define WKWEBVIEW_WEBVIEWDIDCLOSE_SUPPORTED 1 | |||||
| #endif | |||||
| #if (defined (MAC_OS_X_VERSION_10_12) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12) | |||||
| #define WKWEBVIEW_OPENPANEL_SUPPORTED 1 | |||||
| #endif | |||||
| #if (defined (MAC_OS_X_VERSION_10_12) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12) | |||||
| #define WKWEBVIEW_OPENPANEL_SUPPORTED 1 | |||||
| #endif | #endif | ||||
| static NSURL* appendParametersToFileURL (const URL& url, NSURL* fileUrl) | static NSURL* appendParametersToFileURL (const URL& url, NSURL* fileUrl) | ||||
| { | { | ||||
| #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9) | |||||
| const auto parameterNames = url.getParameterNames(); | |||||
| const auto parameterValues = url.getParameterValues(); | |||||
| if (@available (macOS 10.9, *)) | |||||
| { | |||||
| const auto parameterNames = url.getParameterNames(); | |||||
| const auto parameterValues = url.getParameterValues(); | |||||
| jassert (parameterNames.size() == parameterValues.size()); | |||||
| jassert (parameterNames.size() == parameterValues.size()); | |||||
| if (parameterNames.isEmpty()) | |||||
| return fileUrl; | |||||
| if (parameterNames.isEmpty()) | |||||
| return fileUrl; | |||||
| NSUniquePtr<NSURLComponents> components ([[NSURLComponents alloc] initWithURL: fileUrl resolvingAgainstBaseURL: NO]); | |||||
| NSUniquePtr<NSMutableArray> queryItems ([[NSMutableArray alloc] init]); | |||||
| NSUniquePtr<NSURLComponents> components ([[NSURLComponents alloc] initWithURL: fileUrl resolvingAgainstBaseURL: NO]); | |||||
| NSUniquePtr<NSMutableArray> queryItems ([[NSMutableArray alloc] init]); | |||||
| for (int i = 0; i < parameterNames.size(); ++i) | |||||
| [queryItems.get() addObject: [NSURLQueryItem queryItemWithName: juceStringToNS (parameterNames[i]) | |||||
| value: juceStringToNS (parameterValues[i])]]; | |||||
| for (int i = 0; i < parameterNames.size(); ++i) | |||||
| [queryItems.get() addObject: [NSURLQueryItem queryItemWithName: juceStringToNS (parameterNames[i]) | |||||
| value: juceStringToNS (parameterValues[i])]]; | |||||
| [components.get() setQueryItems: queryItems.get()]; | |||||
| [components.get() setQueryItems: queryItems.get()]; | |||||
| return [components.get() URL]; | |||||
| } | |||||
| return [components.get() URL]; | |||||
| #else | |||||
| const auto queryString = url.getQueryString(); | const auto queryString = url.getQueryString(); | ||||
| if (queryString.isNotEmpty()) | if (queryString.isNotEmpty()) | ||||
| @@ -69,18 +65,22 @@ static NSURL* appendParametersToFileURL (const URL& url, NSURL* fileUrl) | |||||
| return [NSURL URLWithString: [fileUrlString stringByAppendingString: juceStringToNS (queryString)]]; | return [NSURL URLWithString: [fileUrlString stringByAppendingString: juceStringToNS (queryString)]]; | ||||
| return fileUrl; | return fileUrl; | ||||
| #endif | |||||
| } | } | ||||
| static NSMutableURLRequest* getRequestForURL (const String& url, const StringArray* headers, const MemoryBlock* postData) | static NSMutableURLRequest* getRequestForURL (const String& url, const StringArray* headers, const MemoryBlock* postData) | ||||
| { | { | ||||
| NSString* urlString = juceStringToNS (url); | NSString* urlString = juceStringToNS (url); | ||||
| #if JUCE_IOS || (defined (MAC_OS_X_VERSION_10_9) && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9) | |||||
| urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters: [NSCharacterSet URLQueryAllowedCharacterSet]]; | |||||
| #else | |||||
| urlString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; | |||||
| #endif | |||||
| if (@available (macOS 10.9, *)) | |||||
| { | |||||
| urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters: [NSCharacterSet URLQueryAllowedCharacterSet]]; | |||||
| } | |||||
| else | |||||
| { | |||||
| JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wdeprecated-declarations") | |||||
| urlString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; | |||||
| JUCE_END_IGNORE_WARNINGS_GCC_LIKE | |||||
| } | |||||
| if (NSURL* nsURL = [NSURL URLWithString: urlString]) | if (NSURL* nsURL = [NSURL URLWithString: urlString]) | ||||
| { | { | ||||
| @@ -177,11 +177,7 @@ struct WebViewDelegateClass : public ObjCClass<NSObject> | |||||
| addMethod (@selector (webView:didFinishNavigation:), didFinishNavigation, "v@:@@"); | addMethod (@selector (webView:didFinishNavigation:), didFinishNavigation, "v@:@@"); | ||||
| addMethod (@selector (webView:didFailNavigation:withError:), didFailNavigation, "v@:@@@"); | addMethod (@selector (webView:didFailNavigation:withError:), didFailNavigation, "v@:@@@"); | ||||
| addMethod (@selector (webView:didFailProvisionalNavigation:withError:), didFailProvisionalNavigation, "v@:@@@"); | addMethod (@selector (webView:didFailProvisionalNavigation:withError:), didFailProvisionalNavigation, "v@:@@@"); | ||||
| #if WKWEBVIEW_WEBVIEWDIDCLOSE_SUPPORTED | |||||
| addMethod (@selector (webViewDidClose:), webViewDidClose, "v@:@"); | addMethod (@selector (webViewDidClose:), webViewDidClose, "v@:@"); | ||||
| #endif | |||||
| addMethod (@selector (webView:createWebViewWithConfiguration:forNavigationAction: | addMethod (@selector (webView:createWebViewWithConfiguration:forNavigationAction: | ||||
| windowFeatures:), createWebView, "@@:@@@@"); | windowFeatures:), createWebView, "@@:@@@@"); | ||||
| @@ -233,12 +229,10 @@ private: | |||||
| displayError (getOwner (self), error); | displayError (getOwner (self), error); | ||||
| } | } | ||||
| #if WKWEBVIEW_WEBVIEWDIDCLOSE_SUPPORTED | |||||
| static void webViewDidClose (id self, SEL, WKWebView*) | static void webViewDidClose (id self, SEL, WKWebView*) | ||||
| { | { | ||||
| getOwner (self)->windowCloseRequest(); | getOwner (self)->windowCloseRequest(); | ||||
| } | } | ||||
| #endif | |||||
| static WKWebView* createWebView (id self, SEL, WKWebView*, WKWebViewConfiguration*, | static WKWebView* createWebView (id self, SEL, WKWebView*, WKWebViewConfiguration*, | ||||
| WKNavigationAction* navigationAction, WKWindowFeatures*) | WKNavigationAction* navigationAction, WKWindowFeatures*) | ||||