diff --git a/include/wx/osx/webview_webkit.h b/include/wx/osx/webview_webkit.h index 443d9b22d1..dfec234ed0 100644 --- a/include/wx/osx/webview_webkit.h +++ b/include/wx/osx/webview_webkit.h @@ -82,6 +82,8 @@ public: virtual wxVector > GetForwardHistory() wxOVERRIDE; virtual void LoadHistoryItem(wxSharedPtr item) wxOVERRIDE; + virtual void Paste() wxOVERRIDE; + //Undo / redo functionality virtual bool CanUndo() const wxOVERRIDE; virtual bool CanRedo() const wxOVERRIDE; diff --git a/src/osx/webview_webkit.mm b/src/osx/webview_webkit.mm index 3237fc3daa..e2fa2ab42e 100644 --- a/src/osx/webview_webkit.mm +++ b/src/osx/webview_webkit.mm @@ -568,6 +568,18 @@ void wxWebViewWebKit::LoadHistoryItem(wxSharedPtr item) [m_webView goToBackForwardListItem:item->m_histItem]; } +void wxWebViewWebKit::Paste() +{ +#if defined(__WXOSX_IPHONE__) + wxWebView::Paste(); +#else + // The default (javascript) implementation presents the user with a popup + // menu containing a single 'Paste' menu item. + // Send this action to directly paste as expected. + [[NSApplication sharedApplication] sendAction:@selector(paste:) to:nil from:m_webView]; +#endif +} + bool wxWebViewWebKit::CanUndo() const { return [[m_webView undoManager] canUndo]; @@ -624,7 +636,30 @@ void wxWebViewWebKit::RegisterHandler(wxSharedPtr handler) return [super validRequestorForSendType:sendType returnType:returnType]; } -#endif +- (BOOL)performKeyEquivalent:(NSEvent *)event +{ + if ([event modifierFlags] & NSCommandKeyMask) + { + switch ([event.characters characterAtIndex:0]) + { + case 'a': + [self selectAll:nil]; + return YES; + case 'c': + m_webView->Copy(); + return YES; + case 'v': + m_webView->Paste(); + return YES; + case 'x': + m_webView->Cut(); + return YES; + } + } + + return [super performKeyEquivalent:event]; +} +#endif // !defined(__WXOSX_IPHONE__) @end