macOS: Implement wxWebView fullscreen API
This commit is contained in:
@@ -123,6 +123,12 @@ bool wxWebViewWebKit::Create(wxWindow *parent,
|
|||||||
|
|
||||||
NSRect r = wxOSXGetFrameForControl( this, pos , size ) ;
|
NSRect r = wxOSXGetFrameForControl( this, pos , size ) ;
|
||||||
WKWebViewConfiguration* webViewConfig = [[WKWebViewConfiguration alloc] init];
|
WKWebViewConfiguration* webViewConfig = [[WKWebViewConfiguration alloc] init];
|
||||||
|
|
||||||
|
// WebKit API available since macOS 10.11 and iOS 9.0
|
||||||
|
SEL fullScreenSelector = @selector(_setFullScreenEnabled:);
|
||||||
|
if ([webViewConfig.preferences respondsToSelector:fullScreenSelector])
|
||||||
|
[webViewConfig.preferences performSelector:fullScreenSelector withObject:[NSNumber numberWithBool:YES]];
|
||||||
|
|
||||||
if (!m_handlers.empty())
|
if (!m_handlers.empty())
|
||||||
{
|
{
|
||||||
#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13
|
#if __MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_13
|
||||||
@@ -162,6 +168,11 @@ bool wxWebViewWebKit::Create(wxWindow *parent,
|
|||||||
|
|
||||||
[m_webView setUIDelegate:uiDelegate];
|
[m_webView setUIDelegate:uiDelegate];
|
||||||
|
|
||||||
|
// WebKit API available since macOS 10.13 and iOS 11.0
|
||||||
|
SEL fullScreenDelegateSelector = @selector(_setFullscreenDelegate:);
|
||||||
|
if ([m_webView respondsToSelector:fullScreenDelegateSelector])
|
||||||
|
[m_webView performSelector:fullScreenDelegateSelector withObject:uiDelegate];
|
||||||
|
|
||||||
m_UIDelegate = uiDelegate;
|
m_UIDelegate = uiDelegate;
|
||||||
|
|
||||||
LoadURL(strURL);
|
LoadURL(strURL);
|
||||||
@@ -942,6 +953,25 @@ WX_API_AVAILABLE_MACOS(10, 12)
|
|||||||
webKitWindow->Print();
|
webKitWindow->Print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)SendFullscreenChangedEvent:(int)status
|
||||||
|
{
|
||||||
|
wxWebViewEvent event(wxEVT_WEBVIEW_FULLSCREEN_CHANGED, webKitWindow->GetId(),
|
||||||
|
webKitWindow->GetCurrentURL(), wxString());
|
||||||
|
event.SetEventObject(webKitWindow);
|
||||||
|
event.SetInt(status);
|
||||||
|
webKitWindow->HandleWindowEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_webViewDidEnterFullscreen:(WKWebView *)webView
|
||||||
|
{
|
||||||
|
[self SendFullscreenChangedEvent:1];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)_webViewDidExitFullscreen:(WKWebView *)webView
|
||||||
|
{
|
||||||
|
[self SendFullscreenChangedEvent:0];
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation WebViewScriptMessageHandler
|
@implementation WebViewScriptMessageHandler
|
||||||
|
Reference in New Issue
Block a user