From bd17d890a13ce88ae4d64d9c7c3e4c7656058569 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Thu, 1 Mar 2012 12:11:04 -0800 Subject: [PATCH] If no windows are open, keydown events are sent to the shared context. --- Atom.xcodeproj/project.pbxproj | 2 +- Atom/src/Atom.h | 2 +- Atom/src/Atom.mm | 23 ++++++++++++++--------- Atom/src/AtomController.mm | 4 +--- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/Atom.xcodeproj/project.pbxproj b/Atom.xcodeproj/project.pbxproj index 17443ff23..3bd8ddfed 100644 --- a/Atom.xcodeproj/project.pbxproj +++ b/Atom.xcodeproj/project.pbxproj @@ -354,7 +354,6 @@ isa = PBXGroup; children = ( 0487C91D14FED5360045E5E3 /* Supporting Files */, - 0487D15E14FEE7880045E5E3 /* resources */, 0487C93B14FED6090045E5E3 /* src */, ); path = Atom; @@ -363,6 +362,7 @@ 0487C91D14FED5360045E5E3 /* Supporting Files */ = { isa = PBXGroup; children = ( + 0487D15E14FEE7880045E5E3 /* resources */, 0487C93314FED5FB0045E5E3 /* Atom.icns */, 0487C93414FED5FB0045E5E3 /* ClientWindow.xib */, 0487C93514FED5FB0045E5E3 /* Info.plist */, diff --git a/Atom/src/Atom.h b/Atom/src/Atom.h index 97be10f20..b71f03a28 100755 --- a/Atom/src/Atom.h +++ b/Atom/src/Atom.h @@ -7,7 +7,7 @@ class ClientHandler; @class AtomController; @interface Atom : NSApplication { - NSView *_hiddenGlobalView; + NSWindow *_hiddenWindow; BOOL handlingSendEvent_; CefRefPtr _clientHandler; } diff --git a/Atom/src/Atom.mm b/Atom/src/Atom.mm index d60733609..49bea4983 100755 --- a/Atom/src/Atom.mm +++ b/Atom/src/Atom.mm @@ -23,7 +23,7 @@ } - (void)dealloc { - [_hiddenGlobalView release]; + [_hiddenWindow release]; [self dealloc]; } @@ -37,21 +37,28 @@ - (void)sendEvent:(NSEvent*)event { CefScopedSendingEvent sendingEventScoper; - [super sendEvent:event]; + + if (_clientHandler && ![self keyWindow] && [event type] == NSKeyDown) { + [_hiddenWindow makeKeyAndOrderFront:self]; + [_hiddenWindow sendEvent:event]; + } + else { + [super sendEvent:event]; + } } - (void)createAtomContext { _clientHandler = new ClientHandler(self); CefWindowInfo window_info; - _hiddenGlobalView = [[NSView alloc] init]; - window_info.SetAsChild(_hiddenGlobalView, 0, 0, 0, 0); - + _hiddenWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 0, 0) styleMask:nil backing:nil defer:YES]; + window_info.SetAsChild([_hiddenWindow contentView], 0, 0, 0, 0); + CefBrowserSettings settings; NSURL *resourceDirURL = [[NSBundle mainBundle] resourceURL]; NSString *indexURLString = [[resourceDirURL URLByAppendingPathComponent:@"index.html"] absoluteString]; CefBrowser::CreateBrowser(window_info, _clientHandler.get(), [indexURLString UTF8String], settings); -} + } - (void)open:(NSString *)path { CefRefPtr atomContext = _clientHandler->GetBrowser()->GetMainFrame()->GetV8Context(); @@ -71,9 +78,7 @@ CefShutdown(); } -- (void)afterCreated { - _clientHandler->GetBrowser()->ShowDevTools(); -} +#pragma mark BrowserDelegate - (void)loadStart { CefRefPtr context = _clientHandler->GetBrowser()->GetMainFrame()->GetV8Context(); diff --git a/Atom/src/AtomController.mm b/Atom/src/AtomController.mm index d1d75cf15..511cd6242 100644 --- a/Atom/src/AtomController.mm +++ b/Atom/src/AtomController.mm @@ -55,9 +55,7 @@ CefBrowser::CreateBrowser(window_info, _clientHandler.get(), [indexURLString UTF8String], settings); } -- (void)afterCreated { - _clientHandler->GetBrowser()->ShowDevTools(); -} +#pragma mark BrowserDelegate - (void)loadStart { CefRefPtr context = _clientHandler->GetBrowser()->GetMainFrame()->GetV8Context();