| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #import "chrome/browser/ui/cocoa/browser_window_controller.h" | 5 #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <numeric> | 8 #include <numeric> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 400 NSRect frame = [[self window] frame]; | 400 NSRect frame = [[self window] frame]; |
| 401 frame.size.height += convertedSize.height; | 401 frame.size.height += convertedSize.height; |
| 402 frame.origin.y -= convertedSize.height; | 402 frame.origin.y -= convertedSize.height; |
| 403 [[self window] setFrame:frame display:NO]; | 403 [[self window] setFrame:frame display:NO]; |
| 404 } | 404 } |
| 405 } | 405 } |
| 406 | 406 |
| 407 // Create the bridge for the status bubble. | 407 // Create the bridge for the status bubble. |
| 408 statusBubble_ = new StatusBubbleMac([self window], self); | 408 statusBubble_ = new StatusBubbleMac([self window], self); |
| 409 | 409 |
| 410 // Register for application hide/unhide notifications. | |
| 411 [[NSNotificationCenter defaultCenter] | |
| 412 addObserver:self | |
| 413 selector:@selector(applicationDidHide:) | |
| 414 name:NSApplicationDidHideNotification | |
| 415 object:nil]; | |
| 416 [[NSNotificationCenter defaultCenter] | |
| 417 addObserver:self | |
| 418 selector:@selector(applicationDidUnhide:) | |
| 419 name:NSApplicationDidUnhideNotification | |
| 420 object:nil]; | |
| 421 | |
| 422 // This must be done after the view is added to the window since it relies | 410 // This must be done after the view is added to the window since it relies |
| 423 // on the window bounds to determine whether to show buttons or not. | 411 // on the window bounds to determine whether to show buttons or not. |
| 424 if ([self hasToolbar]) // Do not create the buttons in popups. | 412 if ([self hasToolbar]) // Do not create the buttons in popups. |
| 425 [toolbarController_ createBrowserActionButtons]; | 413 [toolbarController_ createBrowserActionButtons]; |
| 426 | 414 |
| 427 extension_keybinding_registry_.reset( | 415 extension_keybinding_registry_.reset( |
| 428 new ExtensionKeybindingRegistryCocoa(browser_->profile(), | 416 new ExtensionKeybindingRegistryCocoa(browser_->profile(), |
| 429 [self window], | 417 [self window], |
| 430 extensions::ExtensionKeybindingRegistry::ALL_EXTENSIONS, | 418 extensions::ExtensionKeybindingRegistry::ALL_EXTENSIONS, |
| 431 windowShim_.get())); | 419 windowShim_.get())); |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 650 [view windowDidChangeActive]; | 638 [view windowDidChangeActive]; |
| 651 }]; | 639 }]; |
| 652 | 640 |
| 653 extensions::ExtensionCommandsGlobalRegistry::Get(browser_->profile()) | 641 extensions::ExtensionCommandsGlobalRegistry::Get(browser_->profile()) |
| 654 ->set_registry_for_active_window(nullptr); | 642 ->set_registry_for_active_window(nullptr); |
| 655 } | 643 } |
| 656 | 644 |
| 657 // Called when we have been minimized. | 645 // Called when we have been minimized. |
| 658 - (void)windowDidMiniaturize:(NSNotification *)notification { | 646 - (void)windowDidMiniaturize:(NSNotification *)notification { |
| 659 [self saveWindowPositionIfNeeded]; | 647 [self saveWindowPositionIfNeeded]; |
| 660 | |
| 661 // Let the selected RenderWidgetHostView know, so that it can tell plugins. | |
| 662 if (WebContents* contents = [self webContents]) { | |
| 663 if (RenderWidgetHostView* rwhv = contents->GetRenderWidgetHostView()) | |
| 664 rwhv->SetWindowVisibility(false); | |
| 665 } | |
| 666 } | 648 } |
| 667 | 649 |
| 668 // Called when we have been unminimized. | 650 // Called when we have been unminimized. |
| 669 - (void)windowDidDeminiaturize:(NSNotification *)notification { | 651 - (void)windowDidDeminiaturize:(NSNotification *)notification { |
| 670 // Make sure the window's show_state (which is now ui::SHOW_STATE_NORMAL) | 652 // Make sure the window's show_state (which is now ui::SHOW_STATE_NORMAL) |
| 671 // gets saved. | 653 // gets saved. |
| 672 [self saveWindowPositionIfNeeded]; | 654 [self saveWindowPositionIfNeeded]; |
| 673 | |
| 674 // Let the selected RenderWidgetHostView know, so that it can tell plugins. | |
| 675 if (WebContents* contents = [self webContents]) { | |
| 676 if (RenderWidgetHostView* rwhv = contents->GetRenderWidgetHostView()) | |
| 677 rwhv->SetWindowVisibility(true); | |
| 678 } | |
| 679 } | |
| 680 | |
| 681 // Called when the application has been hidden. | |
| 682 - (void)applicationDidHide:(NSNotification *)notification { | |
| 683 // Let the selected RenderWidgetHostView know, so that it can tell plugins | |
| 684 // (unless we are minimized, in which case nothing has really changed). | |
| 685 if (![[self window] isMiniaturized]) { | |
| 686 if (WebContents* contents = [self webContents]) { | |
| 687 if (RenderWidgetHostView* rwhv = contents->GetRenderWidgetHostView()) | |
| 688 rwhv->SetWindowVisibility(false); | |
| 689 } | |
| 690 } | |
| 691 } | |
| 692 | |
| 693 // Called when the application has been unhidden. | |
| 694 - (void)applicationDidUnhide:(NSNotification *)notification { | |
| 695 // Let the selected RenderWidgetHostView know, so that it can tell plugins | |
| 696 // (unless we are minimized, in which case nothing has really changed). | |
| 697 if (![[self window] isMiniaturized]) { | |
| 698 if (WebContents* contents = [self webContents]) { | |
| 699 if (RenderWidgetHostView* rwhv = contents->GetRenderWidgetHostView()) | |
| 700 rwhv->SetWindowVisibility(true); | |
| 701 } | |
| 702 } | |
| 703 } | 655 } |
| 704 | 656 |
| 705 // Called when the user clicks the zoom button (or selects it from the Window | 657 // Called when the user clicks the zoom button (or selects it from the Window |
| 706 // menu) to determine the "standard size" of the window, based on the content | 658 // menu) to determine the "standard size" of the window, based on the content |
| 707 // and other factors. If the current size/location differs nontrivally from the | 659 // and other factors. If the current size/location differs nontrivally from the |
| 708 // standard size, Cocoa resizes the window to the standard size, and saves the | 660 // standard size, Cocoa resizes the window to the standard size, and saves the |
| 709 // current size as the "user size". If the current size/location is the same (up | 661 // current size as the "user size". If the current size/location is the same (up |
| 710 // to a fudge factor) as the standard size, Cocoa resizes the window to the | 662 // to a fudge factor) as the standard size, Cocoa resizes the window to the |
| 711 // saved user size. (It is possible for the two to coincide.) In this way, the | 663 // saved user size. (It is possible for the two to coincide.) In this way, the |
| 712 // zoom button acts as a toggle. We determine the standard size based on the | 664 // zoom button acts as a toggle. We determine the standard size based on the |
| (...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1722 // Delegate method called when window is resized. | 1674 // Delegate method called when window is resized. |
| 1723 - (void)windowDidResize:(NSNotification*)notification { | 1675 - (void)windowDidResize:(NSNotification*)notification { |
| 1724 [self saveWindowPositionIfNeeded]; | 1676 [self saveWindowPositionIfNeeded]; |
| 1725 | 1677 |
| 1726 // Resize (and possibly move) the status bubble. Note that we may get called | 1678 // Resize (and possibly move) the status bubble. Note that we may get called |
| 1727 // when the status bubble does not exist. | 1679 // when the status bubble does not exist. |
| 1728 if (statusBubble_) { | 1680 if (statusBubble_) { |
| 1729 statusBubble_->UpdateSizeAndPosition(); | 1681 statusBubble_->UpdateSizeAndPosition(); |
| 1730 } | 1682 } |
| 1731 | 1683 |
| 1732 // Let the selected RenderWidgetHostView know, so that it can tell plugins. | |
| 1733 if (WebContents* contents = [self webContents]) { | |
| 1734 if (RenderWidgetHostView* rwhv = contents->GetRenderWidgetHostView()) | |
| 1735 rwhv->WindowFrameChanged(); | |
| 1736 } | |
| 1737 | |
| 1738 // The FindBar needs to know its own position to properly detect overlaps | 1684 // The FindBar needs to know its own position to properly detect overlaps |
| 1739 // with find results. The position changes whenever the window is resized, | 1685 // with find results. The position changes whenever the window is resized, |
| 1740 // and |layoutSubviews| computes the FindBar's position. | 1686 // and |layoutSubviews| computes the FindBar's position. |
| 1741 // TODO: calling |layoutSubviews| here is a waste, find a better way to | 1687 // TODO: calling |layoutSubviews| here is a waste, find a better way to |
| 1742 // do this. | 1688 // do this. |
| 1743 if ([findBarCocoaController_ isFindBarVisible]) | 1689 if ([findBarCocoaController_ isFindBarVisible]) |
| 1744 [self layoutSubviews]; | 1690 [self layoutSubviews]; |
| 1745 } | 1691 } |
| 1746 | 1692 |
| 1747 // Handle the openLearnMoreAboutCrashLink: action from SadTabView when | 1693 // Handle the openLearnMoreAboutCrashLink: action from SadTabView when |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1770 // Unfortunately, Cocoa sends |-windowWillMove:| too frequently (including | 1716 // Unfortunately, Cocoa sends |-windowWillMove:| too frequently (including |
| 1771 // when clicking on the title bar to activate), and of course | 1717 // when clicking on the title bar to activate), and of course |
| 1772 // |-windowWillMove| is called too early for us to apply our heuristic. (The | 1718 // |-windowWillMove| is called too early for us to apply our heuristic. (The |
| 1773 // heuristic we use for detecting window movement is that if |windowTopGrowth_ | 1719 // heuristic we use for detecting window movement is that if |windowTopGrowth_ |
| 1774 // > 0|, then we should be at the bottom of the work area -- if we're not, | 1720 // > 0|, then we should be at the bottom of the work area -- if we're not, |
| 1775 // we've moved. Similarly for the other side.) | 1721 // we've moved. Similarly for the other side.) |
| 1776 if (!NSContainsRect(workarea, windowFrame) || | 1722 if (!NSContainsRect(workarea, windowFrame) || |
| 1777 (windowTopGrowth_ > 0 && NSMinY(windowFrame) != NSMinY(workarea)) || | 1723 (windowTopGrowth_ > 0 && NSMinY(windowFrame) != NSMinY(workarea)) || |
| 1778 (windowBottomGrowth_ > 0 && NSMaxY(windowFrame) != NSMaxY(workarea))) | 1724 (windowBottomGrowth_ > 0 && NSMaxY(windowFrame) != NSMaxY(workarea))) |
| 1779 [self resetWindowGrowthState]; | 1725 [self resetWindowGrowthState]; |
| 1780 | |
| 1781 // Let the selected RenderWidgetHostView know, so that it can tell plugins. | |
| 1782 if (WebContents* contents = [self webContents]) { | |
| 1783 if (RenderWidgetHostView* rwhv = contents->GetRenderWidgetHostView()) | |
| 1784 rwhv->WindowFrameChanged(); | |
| 1785 } | |
| 1786 } | 1726 } |
| 1787 | 1727 |
| 1788 // Delegate method called when window will be resized; not called for | 1728 // Delegate method called when window will be resized; not called for |
| 1789 // |-setFrame:display:|. | 1729 // |-setFrame:display:|. |
| 1790 - (NSSize)windowWillResize:(NSWindow*)sender toSize:(NSSize)frameSize { | 1730 - (NSSize)windowWillResize:(NSWindow*)sender toSize:(NSSize)frameSize { |
| 1791 [self resetWindowGrowthState]; | 1731 [self resetWindowGrowthState]; |
| 1792 return frameSize; | 1732 return frameSize; |
| 1793 } | 1733 } |
| 1794 | 1734 |
| 1795 // Delegate method: see |NSWindowDelegate| protocol. | 1735 // Delegate method: see |NSWindowDelegate| protocol. |
| (...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2107 | 2047 |
| 2108 - (BOOL)isTabbedWindow { | 2048 - (BOOL)isTabbedWindow { |
| 2109 return browser_->is_type_tabbed(); | 2049 return browser_->is_type_tabbed(); |
| 2110 } | 2050 } |
| 2111 | 2051 |
| 2112 - (NSRect)savedRegularWindowFrame { | 2052 - (NSRect)savedRegularWindowFrame { |
| 2113 return savedRegularWindowFrame_; | 2053 return savedRegularWindowFrame_; |
| 2114 } | 2054 } |
| 2115 | 2055 |
| 2116 @end // @implementation BrowserWindowController(WindowType) | 2056 @end // @implementation BrowserWindowController(WindowType) |
| OLD | NEW |