diff --git a/native/atom_cef_client.cpp b/native/atom_cef_client.cpp index b6e8ae0c3..96f788d78 100644 --- a/native/atom_cef_client.cpp +++ b/native/atom_cef_client.cpp @@ -26,9 +26,14 @@ bool AtomCefClient::OnProcessMessageReceived(CefRefPtr browser, if (name == "open") { bool hasArguments = message->GetArgumentList()->GetSize() == 1; hasArguments ? Open(message->GetArgumentList()->GetString(0)) : Open(); + return true; + } + if (name == "newWindow") { + NewWindow(); return true; } + return false; } diff --git a/native/atom_cef_client.h b/native/atom_cef_client.h index 5256d51f8..014de4701 100644 --- a/native/atom_cef_client.h +++ b/native/atom_cef_client.h @@ -107,6 +107,7 @@ class AtomCefClient : public CefClient, void Open(std::string path); void Open(); + void NewWindow(); IMPLEMENT_REFCOUNTING(AtomCefClient); IMPLEMENT_LOCKING(AtomCefClient); diff --git a/native/atom_cef_client_mac.mm b/native/atom_cef_client_mac.mm index b8a9283e8..bbd95d2a8 100644 --- a/native/atom_cef_client_mac.mm +++ b/native/atom_cef_client_mac.mm @@ -16,4 +16,8 @@ void AtomCefClient::Open() { NSURL *url = [[panel URLs] lastObject]; Open([[url path] UTF8String]); } +} + +void AtomCefClient::NewWindow() { + [(AtomApplication *)[AtomApplication sharedApplication] open:nil]; } \ No newline at end of file diff --git a/src/app/atom.coffee b/src/app/atom.coffee index cb54c75c6..fc88a057c 100644 --- a/src/app/atom.coffee +++ b/src/app/atom.coffee @@ -3,3 +3,4 @@ fs = require('fs') atom.configDirPath = fs.absolute("~/.atom") atom.configFilePath = fs.join(atom.configDirPath, "atom.coffee") atom.open = (args...) -> @sendMessageToBrowserProcess('open', args) +atom.newWindow = (args...) -> @sendMessageToBrowserProcess('newWindow', args) diff --git a/src/app/keymap.coffee b/src/app/keymap.coffee index 7c75682e2..eff396131 100644 --- a/src/app/keymap.coffee +++ b/src/app/keymap.coffee @@ -19,7 +19,7 @@ class Keymap 'meta-,': 'open-user-configuration' 'meta-o': 'open' - $(document).on 'new-window', => $native.newWindow() + $(document).on 'new-window', => atom.newWindow() $(document).on 'open-user-configuration', => atom.open(atom.configFilePath) $(document).on 'open', => atom.open()