Browse Source

Fixed broken copy&paste in WebBrowserComponent on macOS

tags/2021-05-28
hogliux 8 years ago
parent
commit
b14d0cb33a
1 changed files with 31 additions and 3 deletions
  1. +31
    -3
      modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm

+ 31
- 3
modules/juce_gui_extra/native/juce_mac_WebBrowserComponent.mm View File

@@ -26,6 +26,31 @@
#if JUCE_MAC
struct WebViewKeyEquivalentResponder : public ObjCClass<WebView>
{
WebViewKeyEquivalentResponder() : ObjCClass<WebView> ("WebViewKeyEquivalentResponder_")
{
addMethod (@selector (performKeyEquivalent:), performKeyEquivalent, @encode (BOOL), "@:@");
registerClass();
}
private:
static BOOL performKeyEquivalent (id self, SEL selector, NSEvent* event)
{
NSResponder* first = [[self window] firstResponder];
if (([event modifierFlags] & NSDeviceIndependentModifierFlagsMask) == NSCommandKeyMask)
{
if ([[event charactersIgnoringModifiers] isEqualToString:@"x"]) return [NSApp sendAction:@selector(cut:) to:first from:self];
if ([[event charactersIgnoringModifiers] isEqualToString:@"c"]) return [NSApp sendAction:@selector(copy:) to:first from:self];
if ([[event charactersIgnoringModifiers] isEqualToString:@"v"]) return [NSApp sendAction:@selector(paste:) to:first from:self];
if ([[event charactersIgnoringModifiers] isEqualToString:@"a"]) return [NSApp sendAction:@selector(selectAll:) to:first from:self];
}
objc_super s = { self, [WebView class] };
return ObjCMsgSendSuper<BOOL, NSEvent*> (&s, selector, event);
}
};
struct DownloadClickDetectorClass : public ObjCClass<NSObject>
{
DownloadClickDetectorClass() : ObjCClass<NSObject> ("JUCEWebClickDetector_")
@@ -194,9 +219,12 @@ public:
Pimpl (WebBrowserComponent* owner)
{
#if JUCE_MAC
webView = [[WebView alloc] initWithFrame: NSMakeRect (0, 0, 100.0f, 100.0f)
frameName: nsEmptyString()
groupName: nsEmptyString()];
static WebViewKeyEquivalentResponder webviewClass;
webView = (WebView*) webviewClass.createInstance();
webView = [webView initWithFrame: NSMakeRect (0, 0, 100.0f, 100.0f)
frameName: nsEmptyString()
groupName: nsEmptyString()];
setView (webView);
static DownloadClickDetectorClass cls;


Loading…
Cancel
Save