OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/panels/panel_window_controller_cocoa.h" | 5 #include "chrome/browser/ui/panels/panel_window_controller_cocoa.h" |
6 | 6 |
7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/mac/bundle_locations.h" | 10 #include "base/mac/bundle_locations.h" |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 [self terminateBoundsAnimation]; | 354 [self terminateBoundsAnimation]; |
355 animateOnBoundsChange_ = NO; | 355 animateOnBoundsChange_ = NO; |
356 // Tab strip isn't empty. Make browser to close all the tabs, allowing the | 356 // Tab strip isn't empty. Make browser to close all the tabs, allowing the |
357 // renderer to shut down and call us back again. | 357 // renderer to shut down and call us back again. |
358 // The tab strip of Panel is not visible and contains only one tab but | 358 // The tab strip of Panel is not visible and contains only one tab but |
359 // it still has to be closed. | 359 // it still has to be closed. |
360 browser->OnWindowClosing(); | 360 browser->OnWindowClosing(); |
361 return NO; | 361 return NO; |
362 } | 362 } |
363 | 363 |
364 // the tab strip is empty, it's ok to close the window | 364 // The tab strip is empty, it's ok to close the window. |
| 365 // Ensure focus goes to previous active browser window. |
| 366 [BrowserWindowUtils selectPreviousActiveBrowserWindow:browser]; |
365 return YES; | 367 return YES; |
366 } | 368 } |
367 | 369 |
368 // When windowShouldClose returns YES (or if controller receives direct 'close' | 370 // When windowShouldClose returns YES (or if controller receives direct 'close' |
369 // signal), window will be unconditionally closed. Clean up. | 371 // signal), window will be unconditionally closed. Clean up. |
370 - (void)windowWillClose:(NSNotification*)notification { | 372 - (void)windowWillClose:(NSNotification*)notification { |
371 DCHECK(windowShim_->browser()->tabstrip_model()->empty()); | 373 DCHECK(windowShim_->browser()->tabstrip_model()->empty()); |
372 // Avoid callbacks from a nonblocking animation in progress, if any. | 374 // Avoid callbacks from a nonblocking animation in progress, if any. |
373 [self terminateBoundsAnimation]; | 375 [self terminateBoundsAnimation]; |
374 windowShim_->DidCloseNativeWindow(); | 376 windowShim_->DidCloseNativeWindow(); |
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
602 } | 604 } |
603 | 605 |
604 - (BOOL)canBecomeKeyWindow { | 606 - (BOOL)canBecomeKeyWindow { |
605 // Panel can only gain focus if it is expanded. Minimized panels do not | 607 // Panel can only gain focus if it is expanded. Minimized panels do not |
606 // participate in Cmd-~ rotation. | 608 // participate in Cmd-~ rotation. |
607 // TODO(dimich): If it will be ever desired to expand/focus the Panel on | 609 // TODO(dimich): If it will be ever desired to expand/focus the Panel on |
608 // keyboard navigation or via main menu, the care should be taken to avoid | 610 // keyboard navigation or via main menu, the care should be taken to avoid |
609 // cases when minimized Panel is getting keyboard input, invisibly. | 611 // cases when minimized Panel is getting keyboard input, invisibly. |
610 return windowShim_->panel()->expansion_state() == Panel::EXPANDED; | 612 return windowShim_->panel()->expansion_state() == Panel::EXPANDED; |
611 } | 613 } |
612 | |
613 @end | 614 @end |
OLD | NEW |