From 670b9dc52dc84ab8be35cb4329535d7c273d4024 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Wed, 29 Feb 2012 17:26:50 -0800 Subject: [PATCH] meta-r reloads a controller --- Atom.xcodeproj/project.pbxproj | 2 +- Atom/src/Atom.mm | 9 ++++----- Atom/src/AtomController.h | 6 ++++-- Atom/src/AtomController.mm | 23 ++++++++++++++++++----- Atom/src/client_handler.mm | 17 +++++++++++------ 5 files changed, 38 insertions(+), 19 deletions(-) diff --git a/Atom.xcodeproj/project.pbxproj b/Atom.xcodeproj/project.pbxproj index 977ec02fb..29dcf1f68 100644 --- a/Atom.xcodeproj/project.pbxproj +++ b/Atom.xcodeproj/project.pbxproj @@ -352,9 +352,9 @@ 0487C91C14FED5360045E5E3 /* Atom */ = { isa = PBXGroup; children = ( + 0487C91D14FED5360045E5E3 /* Supporting Files */, 0487D15E14FEE7880045E5E3 /* resources */, 0487C93B14FED6090045E5E3 /* src */, - 0487C91D14FED5360045E5E3 /* Supporting Files */, ); path = Atom; sourceTree = ""; diff --git a/Atom/src/Atom.mm b/Atom/src/Atom.mm index b3db59e88..d60733609 100755 --- a/Atom/src/Atom.mm +++ b/Atom/src/Atom.mm @@ -71,13 +71,12 @@ CefShutdown(); } -- (void)afterCreated:(CefRefPtr) browser { - browser->ShowDevTools(); +- (void)afterCreated { + _clientHandler->GetBrowser()->ShowDevTools(); } -- (void)loadStart:(CefRefPtr)browser { - CefRefPtr frame = browser->GetMainFrame(); - CefRefPtr context = frame->GetV8Context(); +- (void)loadStart { + CefRefPtr context = _clientHandler->GetBrowser()->GetMainFrame()->GetV8Context(); CefRefPtr global = context->GetGlobal(); context->Enter(); diff --git a/Atom/src/AtomController.h b/Atom/src/AtomController.h index d2f3baae8..038de39b3 100644 --- a/Atom/src/AtomController.h +++ b/Atom/src/AtomController.h @@ -18,8 +18,10 @@ class ClientHandler; - (void)createBrowser; -- (void)afterCreated:(CefRefPtr) browser; -- (void)loadStart:(CefRefPtr) browser; +- (void)afterCreated; +- (void)loadStart; +- (bool)keyEventOfType:(cef_handler_keyevent_type_t)type code:(int)code modifiers:(int)modifiers isSystemKey:(bool)isSystemKey isAfterJavaScript:(bool)isAfterJavaScript; + @property (nonatomic, retain) IBOutlet NSView *webView; diff --git a/Atom/src/AtomController.mm b/Atom/src/AtomController.mm index b06f0765c..d1d75cf15 100644 --- a/Atom/src/AtomController.mm +++ b/Atom/src/AtomController.mm @@ -55,13 +55,12 @@ CefBrowser::CreateBrowser(window_info, _clientHandler.get(), [indexURLString UTF8String], settings); } -- (void)afterCreated:(CefRefPtr) browser { - browser->ShowDevTools(); +- (void)afterCreated { + _clientHandler->GetBrowser()->ShowDevTools(); } -- (void)loadStart:(CefRefPtr) browser { - CefRefPtr frame = browser->GetMainFrame(); - CefRefPtr context = frame->GetV8Context(); +- (void)loadStart { + CefRefPtr context = _clientHandler->GetBrowser()->GetMainFrame()->GetV8Context(); CefRefPtr global = context->GetGlobal(); context->Enter(); @@ -79,6 +78,20 @@ context->Exit(); } +- (bool)keyEventOfType:(cef_handler_keyevent_type_t)type + code:(int)code + modifiers:(int)modifiers + isSystemKey:(bool)isSystemKey + isAfterJavaScript:(bool)isAfterJavaScript { + + if (isAfterJavaScript && type == KEYEVENT_RAWKEYDOWN && modifiers == KEY_META && code == 'R') { + _clientHandler->GetBrowser()->ReloadIgnoreCache(); + return YES; + } + + return NO; +} + #pragma mark NSWindowDelegate - (BOOL)windowShouldClose:(id)window { diff --git a/Atom/src/client_handler.mm b/Atom/src/client_handler.mm index 9f93f2853..215ffdbc3 100755 --- a/Atom/src/client_handler.mm +++ b/Atom/src/client_handler.mm @@ -43,8 +43,8 @@ void ClientHandler::OnAfterCreated(CefRefPtr browser) m_Browser = browser; m_BrowserHwnd = browser->GetWindowHandle(); - if ([m_delegate respondsToSelector:@selector(afterCreated:)]) { - [m_delegate afterCreated:browser]; + if ([m_delegate respondsToSelector:@selector(afterCreated)]) { + [m_delegate afterCreated]; } } } @@ -71,8 +71,8 @@ void ClientHandler::OnLoadStart(CefRefPtr browser, { REQUIRE_UI_THREAD(); - if ([m_delegate respondsToSelector:@selector(loadStart:)]) { - [m_delegate loadStart:browser]; + if ([m_delegate respondsToSelector:@selector(loadStart)]) { + [m_delegate loadStart]; } } @@ -139,8 +139,13 @@ bool ClientHandler::OnKeyEvent(CefRefPtr browser, bool isAfterJavaScript) { REQUIRE_UI_THREAD(); - - return false; + + if ([m_delegate respondsToSelector:@selector(keyEventOfType:code:modifiers:isSystemKey:isAfterJavaScript:)]) { + return [m_delegate keyEventOfType:type code:code modifiers:modifiers isSystemKey:isSystemKey isAfterJavaScript:isAfterJavaScript]; + } + else { + return false; + } } void ClientHandler::OnContextCreated(CefRefPtr browser,