From 3ad5d17612fe7df0ad3db230d03fee8a120bc8e8 Mon Sep 17 00:00:00 2001 From: Haojian Wu Date: Mon, 14 Sep 2015 19:28:13 +0800 Subject: [PATCH] [OS X] Implement 'activate-with-open-windows' event for app. --- atom/browser/api/atom_api_app.cc | 4 ++++ atom/browser/api/atom_api_app.h | 1 + atom/browser/browser.cc | 4 ++++ atom/browser/browser.h | 3 +++ atom/browser/browser_observer.h | 4 ++++ atom/browser/mac/atom_application_delegate.mm | 1 + docs/api/app.md | 5 +++++ 7 files changed, 22 insertions(+) diff --git a/atom/browser/api/atom_api_app.cc b/atom/browser/api/atom_api_app.cc index e2d265c5da..f7c20483b4 100644 --- a/atom/browser/api/atom_api_app.cc +++ b/atom/browser/api/atom_api_app.cc @@ -171,6 +171,10 @@ void App::OnActivateWithNoOpenWindows() { Emit("activate-with-no-open-windows"); } +void App::OnActivateWithOpenWindows() { + Emit("activate-with-open-windows"); +} + void App::OnWillFinishLaunching() { Emit("will-finish-launching"); } diff --git a/atom/browser/api/atom_api_app.h b/atom/browser/api/atom_api_app.h index 040f7e3363..5f29744e91 100644 --- a/atom/browser/api/atom_api_app.h +++ b/atom/browser/api/atom_api_app.h @@ -42,6 +42,7 @@ class App : public mate::EventEmitter, void OnOpenFile(bool* prevent_default, const std::string& file_path) override; void OnOpenURL(const std::string& url) override; void OnActivateWithNoOpenWindows() override; + void OnActivateWithOpenWindows() override; void OnWillFinishLaunching() override; void OnFinishLaunching() override; void OnSelectCertificate( diff --git a/atom/browser/browser.cc b/atom/browser/browser.cc index 3419ecbe33..11530375ef 100644 --- a/atom/browser/browser.cc +++ b/atom/browser/browser.cc @@ -98,6 +98,10 @@ void Browser::ActivateWithNoOpenWindows() { FOR_EACH_OBSERVER(BrowserObserver, observers_, OnActivateWithNoOpenWindows()); } +void Browser::ActivateWithOpenWindows() { + FOR_EACH_OBSERVER(BrowserObserver, observers_, OnActivateWithOpenWindows()); +} + void Browser::WillFinishLaunching() { FOR_EACH_OBSERVER(BrowserObserver, observers_, OnWillFinishLaunching()); } diff --git a/atom/browser/browser.h b/atom/browser/browser.h index dc412cefb0..43b253c840 100644 --- a/atom/browser/browser.h +++ b/atom/browser/browser.h @@ -111,6 +111,9 @@ class Browser : public WindowListObserver { // Tell the application that application is activated with no open windows. void ActivateWithNoOpenWindows(); + // Tell the application that application is activated with open windows. + void ActivateWithOpenWindows(); + // Tell the application the loading has been done. void WillFinishLaunching(); void DidFinishLaunching(); diff --git a/atom/browser/browser_observer.h b/atom/browser/browser_observer.h index 20fd08a2e9..815d21bb84 100644 --- a/atom/browser/browser_observer.h +++ b/atom/browser/browser_observer.h @@ -47,6 +47,10 @@ class BrowserObserver { // dock icon). virtual void OnActivateWithNoOpenWindows() {} + // The browser is activated with open windows (usually by clicking on the dock + // icon). + virtual void OnActivateWithOpenWindows() {} + // The browser has finished loading. virtual void OnWillFinishLaunching() {} virtual void OnFinishLaunching() {} diff --git a/atom/browser/mac/atom_application_delegate.mm b/atom/browser/mac/atom_application_delegate.mm index 16dcf6fd95..0ee46e59e6 100644 --- a/atom/browser/mac/atom_application_delegate.mm +++ b/atom/browser/mac/atom_application_delegate.mm @@ -53,6 +53,7 @@ hasVisibleWindows:(BOOL)flag { atom::Browser* browser = atom::Browser::Get(); if (flag) { + browser->ActivateWithOpenWindows(); return YES; } else { browser->ActivateWithNoOpenWindows(); diff --git a/docs/api/app.md b/docs/api/app.md index 799db98882..bb77a32913 100644 --- a/docs/api/app.md +++ b/docs/api/app.md @@ -100,6 +100,11 @@ Emitted when the application is activated while there are no open windows, which usually happens when the user has closed all of the application's windows and then clicks on the application's dock icon. +### Event: activated-with-open-windows _OS X_ + +Emitted when the application is activated while there are open windows, which +usually happens when clicks on the applications's dock icon. + ### Event: 'browser-window-blur' Returns: