summaryrefslogtreecommitdiffstats
path: root/chrome/browser/cocoa/tab_window_controller.mm
diff options
context:
space:
mode:
authorrohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-05 14:57:56 +0000
committerrohitrao@chromium.org <rohitrao@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-05 14:57:56 +0000
commit0f54231d9c2df3a6ed07ecd97886af8d28705df5 (patch)
treea1c624956db172d4933fda182a33c31e55d4627e /chrome/browser/cocoa/tab_window_controller.mm
parent8643163bd70d444b192e544616add93e46113d12 (diff)
downloadchromium_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.mm23
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];