diff options
author | rohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-05 14:57:56 +0000 |
---|---|---|
committer | rohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-05 14:57:56 +0000 |
commit | 0f54231d9c2df3a6ed07ecd97886af8d28705df5 (patch) | |
tree | a1c624956db172d4933fda182a33c31e55d4627e /chrome/browser/cocoa/tab_window_controller.mm | |
parent | 8643163bd70d444b192e544616add93e46113d12 (diff) | |
download | chromium_src-0f54231d9c2df3a6ed07ecd97886af8d28705df5.zip chromium_src-0f54231d9c2df3a6ed07ecd97886af8d28705df5.tar.gz chromium_src-0f54231d9c2df3a6ed07ecd97886af8d28705df5.tar.bz2 |
[Mac] Insert views into the proper place in the view hierarchy when tearing off tabs.
BUG=http://crbug.com/19320
BUG=http://crbug.com/23407
BUG=http://crbug.com/20555
TEST=Tearing off a tab with an open infobar should not show a blank transparent space. After tearing off a tab, both find in page and fullscreen should work properly.
Review URL: http://codereview.chromium.org/258012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27992 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/tab_window_controller.mm')
-rw-r--r-- | chrome/browser/cocoa/tab_window_controller.mm | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/chrome/browser/cocoa/tab_window_controller.mm b/chrome/browser/cocoa/tab_window_controller.mm index e405887..7ca47ea 100644 --- a/chrome/browser/cocoa/tab_window_controller.mm +++ b/chrome/browser/cocoa/tab_window_controller.mm @@ -60,20 +60,21 @@ [self setUseOverlay:YES]; } -- (NSArray*)viewsToMoveToOverlay { - return [NSArray arrayWithObjects:[self tabStripView], - [self tabContentArea], nil]; -} - // if |useOverlay| is true, we're moving views into the overlay's content // area. If false, we're moving out of the overlay back into the window's // content. - (void)moveViewsBetweenWindowAndOverlay:(BOOL)useOverlay { - NSView* moveTo = useOverlay ? - [overlayWindow_ contentView] : [cachedContentView_ superview]; - NSArray* viewsToMove = [self viewsToMoveToOverlay]; - for (NSView* view in viewsToMove) - [moveTo addSubview:view]; + if (useOverlay) { + [[[overlayWindow_ contentView] superview] addSubview:[self tabStripView]]; + // Add the original window's content view as a subview of the overlay + // window's content view. We cannot simply use setContentView: here because + // the overlay window has a different content size (due to it being + // borderless). + [[overlayWindow_ contentView] addSubview:cachedContentView_]; + } else { + [[[[self window] contentView] superview] addSubview:[self tabStripView]]; + [[self window] setContentView:cachedContentView_]; + } } // If |useOverlay| is YES, creates a new overlay window and puts the tab strip @@ -95,8 +96,6 @@ [overlayWindow_ setBackgroundColor:[NSColor clearColor]]; [overlayWindow_ setOpaque:NO]; [overlayWindow_ setDelegate:self]; - NSView *contentView = [overlayWindow_ contentView]; - [contentView addSubview:[self tabStripView]]; cachedContentView_ = [[self window] contentView]; [self moveViewsBetweenWindowAndOverlay:useOverlay]; [[self window] addChildWindow:overlayWindow_ ordered:NSWindowAbove]; |