Revert "fix: trigger activate event when app is activated via app switcher (#23727)" (#23818)

This reverts commit 2bc85b2579.
This commit is contained in:
Cheng Zhao 2020-05-28 22:53:33 +09:00 committed by GitHub
parent 6516110c70
commit a1edf5cf94
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -41,10 +41,7 @@ static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session;
@end
#endif // BUILDFLAG(USE_ALLOCATOR_SHIM)
@implementation ElectronApplicationDelegate {
@private
bool isFirstActivation_;
}
@implementation ElectronApplicationDelegate
- (void)setApplicationDockMenu:(electron::ElectronMenuModel*)model {
menu_controller_.reset([[ElectronMenuController alloc] initWithModel:model
@ -80,8 +77,6 @@ static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session;
@selector(_coreAttributesFromRange:whichAttributes:completionHandler:));
}
#endif
isFirstActivation_ = true;
}
- (NSMenu*)applicationDockMenu:(NSApplication*)sender {
@ -96,35 +91,11 @@ static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session;
return electron::Browser::Get()->OpenFile(filename_str) ? YES : NO;
}
- (void)applicationDidBecomeActive:(NSNotification*)notify {
// Originally `applicationShouldHandleReopen:hasVisibleWindows:` was used to
// emit Activate event. But the message is sent only when application is
// activated via Dock or Finder ignoring the App Switcher (cmd+tab).
//
// Using `applicationDidBecomeActive' is more reliable but to maintain
// compatibility with previous implementation we ignore activation
// immediately after the application launch, and compute the
// hasVisibleWindows on our own.
//
// Details in https://github.com/electron/electron/pull/23727.
if (isFirstActivation_) {
isFirstActivation_ = false;
return;
}
NSApplication* app = notify.object;
bool hasVisibleWindows = false;
for (NSWindow* win in app.windows) {
if (win.isVisible || win.miniaturized) {
hasVisibleWindows = true;
break;
}
}
- (BOOL)applicationShouldHandleReopen:(NSApplication*)theApplication
hasVisibleWindows:(BOOL)flag {
electron::Browser* browser = electron::Browser::Get();
browser->Activate(hasVisibleWindows);
browser->Activate(static_cast<bool>(flag));
return flag;
}
- (BOOL)application:(NSApplication*)sender