diff --git a/browser/api/atom_api_app.cc b/browser/api/atom_api_app.cc index 81a96a698248..ca49b6212a36 100644 --- a/browser/api/atom_api_app.cc +++ b/browser/api/atom_api_app.cc @@ -79,6 +79,15 @@ v8::Handle App::Terminate(const v8::Arguments &args) { return v8::Undefined(); } +// static +v8::Handle App::Focus(const v8::Arguments &args) { + v8::HandleScope scope; + + Browser::Get()->Focus(); + + return v8::Undefined(); +} + // static v8::Handle App::AppendSwitch(const v8::Arguments &args) { v8::HandleScope scope; @@ -122,6 +131,7 @@ void App::Initialize(v8::Handle target) { NODE_SET_PROTOTYPE_METHOD(t, "quit", Quit); NODE_SET_PROTOTYPE_METHOD(t, "exit", Exit); NODE_SET_PROTOTYPE_METHOD(t, "terminate", Terminate); + NODE_SET_PROTOTYPE_METHOD(t, "focus", Focus); target->Set(v8::String::NewSymbol("Application"), t->GetFunction()); diff --git a/browser/api/atom_api_app.h b/browser/api/atom_api_app.h index 3c174b465c64..f718b6678b8d 100644 --- a/browser/api/atom_api_app.h +++ b/browser/api/atom_api_app.h @@ -36,6 +36,7 @@ class App : public EventEmitter, static v8::Handle Quit(const v8::Arguments &args); static v8::Handle Exit(const v8::Arguments &args); static v8::Handle Terminate(const v8::Arguments &args); + static v8::Handle Focus(const v8::Arguments &args); static v8::Handle AppendSwitch(const v8::Arguments &args); static v8::Handle AppendArgument(const v8::Arguments &args); diff --git a/browser/browser.h b/browser/browser.h index 4f766325689f..6f700b4b5a8a 100644 --- a/browser/browser.h +++ b/browser/browser.h @@ -27,6 +27,9 @@ class Browser : public WindowListObserver { // Quit the application immediately without cleanup work. void Terminate(); + // Focus the application. + void Focus(); + // Tell the application to open a file. bool OpenFile(const std::string& file_path); diff --git a/browser/browser_mac.mm b/browser/browser_mac.mm index 6738416425e9..f328a17621a7 100644 --- a/browser/browser_mac.mm +++ b/browser/browser_mac.mm @@ -12,4 +12,8 @@ void Browser::Terminate() { [[AtomApplication sharedApplication] terminate:nil]; } +void Browser::Focus() { + [[NSApplication sharedApplication] activateIgnoringOtherApps:YES]; +} + } // namespace atom