X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/06d14de207c7c4454bdc75efcefe01e63e93e16d..8626e0b73de21463908bf855700c31e41c661b30:/src/osx/webview_webkit.mm diff --git a/src/osx/webview_webkit.mm b/src/osx/webview_webkit.mm index 598f63391e..3b869b6f32 100644 --- a/src/osx/webview_webkit.mm +++ b/src/osx/webview_webkit.mm @@ -103,7 +103,6 @@ static pascal OSStatus wxWebKitKeyEventHandler(EventHandlerCallRef handler, UInt32 keyCode ; UInt32 modifiers ; - Point point ; UInt32 when = EventTimeToTicks( GetEventTime( event ) ) ; #if wxUSE_UNICODE @@ -140,8 +139,6 @@ static pascal OSStatus wxWebKitKeyEventHandler(EventHandlerCallRef handler, sizeof(UInt32), NULL, &keyCode ); GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof(UInt32), NULL, &modifiers ); - GetEventParameter(event, kEventParamMouseLocation, typeQDPoint, NULL, - sizeof(Point), NULL, &point ); UInt32 message = (keyCode << 8) + charCode; switch ( GetEventKind( event ) ) @@ -155,7 +152,7 @@ static pascal OSStatus wxWebKitKeyEventHandler(EventHandlerCallRef handler, wxTheApp->MacSetCurrentEvent( event , handler ) ; if ( /* focus && */ wxTheApp->MacSendKeyDownEvent( - focus, message, modifiers, when, point.h, point.v, uniChar[0])) + focus, message, modifiers, when, uniChar[0])) { result = noErr ; } @@ -165,7 +162,7 @@ static pascal OSStatus wxWebKitKeyEventHandler(EventHandlerCallRef handler, case kEventRawKeyUp : if ( /* focus && */ wxTheApp->MacSendKeyUpEvent( - focus , message , modifiers , when , point.h , point.v , uniChar[0] ) ) + focus , message , modifiers , when , uniChar[0] ) ) { result = noErr ; } @@ -179,8 +176,6 @@ static pascal OSStatus wxWebKitKeyEventHandler(EventHandlerCallRef handler, event.m_controlDown = modifiers & controlKey; event.m_altDown = modifiers & optionKey; event.m_metaDown = modifiers & cmdKey; - event.m_x = point.h; - event.m_y = point.v; #if wxUSE_UNICODE event.m_uniChar = uniChar[0] ; @@ -315,6 +310,15 @@ DEFINE_ONE_SHOT_HANDLER_GETTER( wxWebViewWebKitEventHandler ) @end +@interface WebViewUIDelegate : NSObject +{ + wxWebViewWebKit* webKitWindow; +} + +- initWithWxWindow: (wxWebViewWebKit*)inWindow; + +@end + //We use a hash to map scheme names to wxWebViewHandler WX_DECLARE_STRING_HASH_MAP(wxSharedPtr, wxStringToWebHandlerMap); @@ -386,6 +390,11 @@ bool wxWebViewWebKit::Create(wxWindow *parent, [m_webView setPolicyDelegate:policyDelegate]; + WebViewUIDelegate* uiDelegate = + [[WebViewUIDelegate alloc] initWithWxWindow: this]; + + [m_webView setUIDelegate:uiDelegate]; + //Register our own class for custom scheme handling [NSURLProtocol registerClass:[WebViewCustomProtocol class]]; @@ -397,14 +406,19 @@ wxWebViewWebKit::~wxWebViewWebKit() { WebViewLoadDelegate* loadDelegate = [m_webView frameLoadDelegate]; WebViewPolicyDelegate* policyDelegate = [m_webView policyDelegate]; + WebViewUIDelegate* uiDelegate = [m_webView UIDelegate]; [m_webView setFrameLoadDelegate: nil]; [m_webView setPolicyDelegate: nil]; + [m_webView setUIDelegate: nil]; if (loadDelegate) [loadDelegate release]; if (policyDelegate) [policyDelegate release]; + + if (uiDelegate) + [uiDelegate release]; } // ---------------------------------------------------------------------------- @@ -694,7 +708,7 @@ void wxWebViewWebKit::OnSize(wxSizeEvent &event) // we want is the root view, because we need to make the y origin relative // to the very top of the window, not its contents, since we later flip // the y coordinate for Cocoa. - HIViewConvertRect (&rect, m_peer->GetControlRef(), + HIViewConvertRect (&rect, GetPeer()->GetControlRef(), HIViewGetRoot( (WindowRef) MacGetTopLevelWindowRef() )); @@ -823,7 +837,7 @@ void wxWebViewWebKit::SetZoom(wxWebViewZoom zoom) } -void wxWebViewWebKit::SetPage(const wxString& src, const wxString& baseUrl) +void wxWebViewWebKit::DoSetPage(const wxString& src, const wxString& baseUrl) { if ( !m_webView ) return; @@ -1315,4 +1329,23 @@ wxString nsErrorToWxHtmlError(NSError* error, wxWebViewNavigationError* out) @end + +@implementation WebViewUIDelegate + +- initWithWxWindow: (wxWebViewWebKit*)inWindow +{ + [super init]; + webKitWindow = inWindow; // non retained + return self; +} + +- (void)webView:(WebView *)sender printFrameView:(WebFrameView *)frameView +{ + wxUnusedVar(sender); + wxUnusedVar(frameView); + + webKitWindow->Print(); +} +@end + #endif //wxUSE_WEBVIEW && wxUSE_WEBVIEW_WEBKIT