Make keyboard shortcuts work on Mac

When the renderer doesn't handle a key event, we pass it off to the main menu
to see if it can handle it.

Part of #2.
This commit is contained in:
Adam Roben 2013-03-14 13:48:17 -04:00
parent 561fc9a342
commit be6d990a97
4 changed files with 50 additions and 0 deletions

View file

@ -23,6 +23,9 @@
'browser/browser_main_parts.cc',
'browser/browser_main_parts.h',
'browser/browser_main_parts_mac.mm',
'browser/default_web_contents_delegate.cc',
'browser/default_web_contents_delegate.h',
'browser/default_web_contents_delegate_mac.mm',
'browser/devtools_delegate.cc',
'browser/devtools_delegate.h',
'browser/devtools_frontend.cc',

View file

@ -0,0 +1,11 @@
#include "browser/default_web_contents_delegate.h"
namespace brightray {
DefaultWebContentsDelegate::DefaultWebContentsDelegate() {
}
DefaultWebContentsDelegate::~DefaultWebContentsDelegate() {
}
}

View file

@ -0,0 +1,21 @@
#ifndef BRIGHTRAY_BROWSER_DEFAULT_WEB_CONTENTS_DELEGATE_H_
#define BRIGHTRAY_BROWSER_DEFAULT_WEB_CONTENTS_DELEGATE_H_
#include "content/public/browser/web_contents_delegate.h"
namespace brightray {
// This class provides some sane default behaviors to any content::WebContents instance (e.g.,
// keyboard shortcut handling on Mac).
class DefaultWebContentsDelegate : public content::WebContentsDelegate {
public:
DefaultWebContentsDelegate();
~DefaultWebContentsDelegate();
protected:
virtual void HandleKeyboardEvent(content::WebContents*, const content::NativeWebKeyboardEvent&) OVERRIDE;
};
}
#endif

View file

@ -0,0 +1,15 @@
#import "browser/default_web_contents_delegate.h"
#import "content/public/browser/native_web_keyboard_event.h"
#import <AppKit/AppKit.h>
namespace brightray {
void DefaultWebContentsDelegate::HandleKeyboardEvent(content::WebContents*, const content::NativeWebKeyboardEvent& event) {
if (event.skip_in_browser)
return;
[[NSApp mainMenu] performKeyEquivalent:event.os_event];
}
}