feat: add did-resign-active event on app (#37933)

feat: add did-resign-active event on app
This commit is contained in:
Shelley Vohr 2023-04-18 16:53:39 +02:00 committed by GitHub
parent f4b172b9ec
commit 32afdda9ee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 34 additions and 4 deletions

View file

@ -150,9 +150,20 @@ Returns:
* `event` Event
Emitted when mac application become active. Difference from `activate` event is
Emitted when the application becomes active. This differs from the `activate` event in
that `did-become-active` is emitted every time the app becomes active, not only
when Dock icon is clicked or application is re-launched.
when Dock icon is clicked or application is re-launched. It is also emitted when a user
switches to the app via the macOS App Switcher.
### Event: 'did-resign-active' _macOS_
Returns:
* `event` Event
Emitted when the app is no longer active and doesnt have focus. This can be triggered,
for example, by clicking on another application or by using the macOS App Switcher to
switch to another application.
### Event: 'continue-activity' _macOS_

View file

@ -787,6 +787,10 @@ void App::OnNewWindowForTab() {
void App::OnDidBecomeActive() {
Emit("did-become-active");
}
void App::OnDidResignActive() {
Emit("did-resign-active");
}
#endif
bool App::CanCreateWindow(

View file

@ -116,6 +116,7 @@ class App : public ElectronBrowserClient::Delegate,
base::Value::Dict user_info) override;
void OnNewWindowForTab() override;
void OnDidBecomeActive() override;
void OnDidResignActive() override;
#endif
// content::ContentBrowserClient:

View file

@ -291,6 +291,11 @@ void Browser::DidBecomeActive() {
for (BrowserObserver& observer : observers_)
observer.OnDidBecomeActive();
}
void Browser::DidResignActive() {
for (BrowserObserver& observer : observers_)
observer.OnDidResignActive();
}
#endif
} // namespace electron

View file

@ -278,8 +278,11 @@ class Browser : public WindowListObserver {
// Tell the application to create a new window for a tab.
void NewWindowForTab();
// Tell the application that application did become active
// Indicate that the app is now active.
void DidBecomeActive();
// Indicate that the app is no longer active and doesnt have focus.
void DidResignActive();
#endif // BUILDFLAG(IS_MAC)
// Tell the application that application is activated with visible/invisible

View file

@ -78,8 +78,10 @@ class BrowserObserver : public base::CheckedObserver {
// User clicked the native macOS new tab button. (macOS only)
virtual void OnNewWindowForTab() {}
// Browser did become active.
// Browser became active.
virtual void OnDidBecomeActive() {}
// Browser lost active status.
virtual void OnDidResignActive() {}
#endif
protected:

View file

@ -92,6 +92,10 @@ static NSDictionary* UNNotificationResponseToNSDictionary(
electron::Browser::Get()->DidBecomeActive();
}
- (void)applicationDidResignActive:(NSNotification*)notification {
electron::Browser::Get()->DidResignActive();
}
- (NSMenu*)applicationDockMenu:(NSApplication*)sender {
if (menu_controller_)
return [menu_controller_ menu];