Chromium Code Reviews| Index: chrome/app/chrome_main_app_mode_mac.mm |
| diff --git a/chrome/app/chrome_main_app_mode_mac.mm b/chrome/app/chrome_main_app_mode_mac.mm |
| index a75f38da0fc895a5ae0c5ed6dd30226ff37594b7..19e5dc8dd9cff5a75433d5feb1ace964a0e6946f 100644 |
| --- a/chrome/app/chrome_main_app_mode_mac.mm |
| +++ b/chrome/app/chrome_main_app_mode_mac.mm |
| @@ -51,6 +51,10 @@ class AppShimController : public IPC::Listener { |
| // shim process should die. |
| void OnLaunchAppDone(bool success); |
| + // Called when the app is activated, either by the user clicking on it in the |
| + // dock or by Cmd+Tabbing to it. |
| + void OnDidActivateApplication(); |
| + |
| // Quits the app shim process. |
| void Quit(); |
| @@ -95,14 +99,30 @@ void AppShimController::OnChannelError() { |
| } |
| void AppShimController::OnLaunchAppDone(bool success) { |
| - if (!success) |
| + if (!success) { |
| Quit(); |
| + return; |
| + } |
| + [[[NSWorkspace sharedWorkspace] notificationCenter] |
| + addObserverForName:NSWorkspaceDidActivateApplicationNotification |
| + object:nil |
| + queue:nil |
| + usingBlock:^(NSNotification* notification) { |
| + NSRunningApplication* activated_app = |
|
Nico
2013/03/18 22:50:59
nit: block bodies are supposed to be indented 4 sp
jeremya
2013/03/18 23:17:14
Done.
|
| + [[notification userInfo] objectForKey:NSWorkspaceApplicationKey]; |
| + if ([activated_app isEqual:[NSRunningApplication currentApplication]]) |
| + OnDidActivateApplication(); |
| + }]; |
| } |
| void AppShimController::Quit() { |
| [NSApp terminate:nil]; |
| } |
| +void AppShimController::OnDidActivateApplication() { |
| + channel_->Send(new AppShimHostMsg_FocusApp); |
| +} |
| + |
| //----------------------------------------------------------------------------- |
| // A ReplyEventHandler is a helper class to send an Apple Event to a process |