| 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 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h" | 5 #import "chrome/browser/ui/cocoa/browser_window_controller_private.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/mac/mac_util.h" | 10 #include "base/mac/mac_util.h" |
| (...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 // While we move views (and focus) around, disable any bar visibility changes. | 559 // While we move views (and focus) around, disable any bar visibility changes. |
| 560 [self disableBarVisibilityUpdates]; | 560 [self disableBarVisibilityUpdates]; |
| 561 | 561 |
| 562 // Retain the tab strip view while we remove it from its superview. | 562 // Retain the tab strip view while we remove it from its superview. |
| 563 base::scoped_nsobject<NSView> tabStripView; | 563 base::scoped_nsobject<NSView> tabStripView; |
| 564 if ([self hasTabStrip]) { | 564 if ([self hasTabStrip]) { |
| 565 tabStripView.reset([[self tabStripView] retain]); | 565 tabStripView.reset([[self tabStripView] retain]); |
| 566 [tabStripView removeFromSuperview]; | 566 [tabStripView removeFromSuperview]; |
| 567 } | 567 } |
| 568 | 568 |
| 569 // Ditto for the content view. | |
| 570 base::scoped_nsobject<NSView> contentView( | |
| 571 [[sourceWindow contentView] retain]); | |
| 572 // Disable autoresizing of subviews while we move views around. This prevents | 569 // Disable autoresizing of subviews while we move views around. This prevents |
| 573 // spurious renderer resizes. | 570 // spurious renderer resizes. |
| 574 [contentView setAutoresizesSubviews:NO]; | 571 [self.chromeContentView setAutoresizesSubviews:NO]; |
| 575 [contentView removeFromSuperview]; | 572 [self.chromeContentView removeFromSuperview]; |
| 576 | 573 |
| 577 // Have to do this here, otherwise later calls can crash because the window | 574 // Have to do this here, otherwise later calls can crash because the window |
| 578 // has no delegate. | 575 // has no delegate. |
| 579 [sourceWindow setDelegate:nil]; | 576 [sourceWindow setDelegate:nil]; |
| 580 [destWindow setDelegate:self]; | 577 [destWindow setDelegate:self]; |
| 581 | 578 |
| 582 // With this call, valgrind complains that a "Conditional jump or move depends | 579 // With this call, valgrind complains that a "Conditional jump or move depends |
| 583 // on uninitialised value(s)". The error happens in -[NSThemeFrame | 580 // on uninitialised value(s)". The error happens in -[NSThemeFrame |
| 584 // drawOverlayRect:]. I'm pretty convinced this is an Apple bug, but there is | 581 // drawOverlayRect:]. I'm pretty convinced this is an Apple bug, but there is |
| 585 // no visual impact. I have been unable to tickle it away with other window | 582 // no visual impact. I have been unable to tickle it away with other window |
| 586 // or view manipulation Cocoa calls. Stack added to suppressions_mac.txt. | 583 // or view manipulation Cocoa calls. Stack added to suppressions_mac.txt. |
| 587 [contentView setAutoresizesSubviews:YES]; | 584 [self.chromeContentView setAutoresizesSubviews:YES]; |
| 588 [destWindow setContentView:contentView]; | 585 [[destWindow contentView] addSubview:self.chromeContentView |
| 586 positioned:NSWindowBelow |
| 587 relativeTo:nil]; |
| 588 self.chromeContentView.frame = [[destWindow contentView] bounds]; |
| 589 | 589 |
| 590 // Move the incognito badge if present. | 590 // Move the incognito badge if present. |
| 591 if ([self shouldShowAvatar]) { | 591 if ([self shouldShowAvatar]) { |
| 592 NSView* avatarButtonView = [avatarButtonController_ view]; | 592 NSView* avatarButtonView = [avatarButtonController_ view]; |
| 593 | 593 |
| 594 [avatarButtonView removeFromSuperview]; | 594 [avatarButtonView removeFromSuperview]; |
| 595 [avatarButtonView setHidden:YES]; // Will be shown in layout. | 595 [avatarButtonView setHidden:YES]; // Will be shown in layout. |
| 596 [[destWindow cr_windowView] addSubview:avatarButtonView]; | 596 [[destWindow cr_windowView] addSubview:avatarButtonView]; |
| 597 } | 597 } |
| 598 | 598 |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 845 | 845 |
| 846 - (void)windowDidEnterFullScreen:(NSNotification*)notification { | 846 - (void)windowDidEnterFullScreen:(NSNotification*)notification { |
| 847 // In Yosemite, some combination of the titlebar and toolbar always show in | 847 // In Yosemite, some combination of the titlebar and toolbar always show in |
| 848 // full-screen mode. We do not want either to show. Search for the window that | 848 // full-screen mode. We do not want either to show. Search for the window that |
| 849 // contains the views, and hide it. There is no need to ever unhide the view. | 849 // contains the views, and hide it. There is no need to ever unhide the view. |
| 850 // http://crbug.com/380235 | 850 // http://crbug.com/380235 |
| 851 if (base::mac::IsOSYosemiteOrLater()) { | 851 if (base::mac::IsOSYosemiteOrLater()) { |
| 852 for (NSWindow* window in [[NSApplication sharedApplication] windows]) { | 852 for (NSWindow* window in [[NSApplication sharedApplication] windows]) { |
| 853 if ([window | 853 if ([window |
| 854 isKindOfClass:NSClassFromString(@"NSToolbarFullScreenWindow")]) { | 854 isKindOfClass:NSClassFromString(@"NSToolbarFullScreenWindow")]) { |
| 855 [window.contentView setHidden:YES]; | 855 [[window contentView] setHidden:YES]; |
| 856 } | 856 } |
| 857 } | 857 } |
| 858 } | 858 } |
| 859 | 859 |
| 860 if (notification) // For System Fullscreen when non-nil. | 860 if (notification) // For System Fullscreen when non-nil. |
| 861 [self deregisterForContentViewResizeNotifications]; | 861 [self deregisterForContentViewResizeNotifications]; |
| 862 enteringFullscreen_ = NO; | 862 enteringFullscreen_ = NO; |
| 863 enteringPresentationMode_ = NO; | 863 enteringPresentationMode_ = NO; |
| 864 | 864 |
| 865 const CommandLine* command_line = CommandLine::ForCurrentProcess(); | 865 const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 923 | 923 |
| 924 barVisibilityUpdatesEnabled_ = NO; | 924 barVisibilityUpdatesEnabled_ = NO; |
| 925 [presentationModeController_ cancelAnimationAndTimers]; | 925 [presentationModeController_ cancelAnimationAndTimers]; |
| 926 } | 926 } |
| 927 | 927 |
| 928 - (CGFloat)toolbarDividerOpacity { | 928 - (CGFloat)toolbarDividerOpacity { |
| 929 return [bookmarkBarController_ toolbarDividerOpacity]; | 929 return [bookmarkBarController_ toolbarDividerOpacity]; |
| 930 } | 930 } |
| 931 | 931 |
| 932 - (void)updateSubviewZOrder:(BOOL)inPresentationMode { | 932 - (void)updateSubviewZOrder:(BOOL)inPresentationMode { |
| 933 NSView* contentView = [[self window] contentView]; | 933 NSView* contentView = self.chromeContentView; |
| 934 NSView* toolbarView = [toolbarController_ view]; | 934 NSView* toolbarView = [toolbarController_ view]; |
| 935 | 935 |
| 936 if (inPresentationMode) { | 936 if (inPresentationMode) { |
| 937 // Toolbar is above tab contents so that it can slide down from top of | 937 // Toolbar is above tab contents so that it can slide down from top of |
| 938 // screen. | 938 // screen. |
| 939 [contentView cr_ensureSubview:toolbarView | 939 [contentView cr_ensureSubview:toolbarView |
| 940 isPositioned:NSWindowAbove | 940 isPositioned:NSWindowAbove |
| 941 relativeTo:[self tabContentArea]]; | 941 relativeTo:[self tabContentArea]]; |
| 942 } else { | 942 } else { |
| 943 // Toolbar is below tab contents so that the info bar arrow can appear above | 943 // Toolbar is below tab contents so that the info bar arrow can appear above |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1026 devTools->SetAllowOverlappingViews(allowOverlappingViews); | 1026 devTools->SetAllowOverlappingViews(allowOverlappingViews); |
| 1027 } | 1027 } |
| 1028 | 1028 |
| 1029 - (void)updateInfoBarTipVisibility { | 1029 - (void)updateInfoBarTipVisibility { |
| 1030 // If there's no toolbar then hide the infobar tip. | 1030 // If there's no toolbar then hide the infobar tip. |
| 1031 [infoBarContainerController_ | 1031 [infoBarContainerController_ |
| 1032 setShouldSuppressTopInfoBarTip:![self hasToolbar]]; | 1032 setShouldSuppressTopInfoBarTip:![self hasToolbar]]; |
| 1033 } | 1033 } |
| 1034 | 1034 |
| 1035 @end // @implementation BrowserWindowController(Private) | 1035 @end // @implementation BrowserWindowController(Private) |
| OLD | NEW |