| Index: chrome/browser/ui/cocoa/browser_window_controller_private.mm
|
| diff --git a/chrome/browser/ui/cocoa/browser_window_controller_private.mm b/chrome/browser/ui/cocoa/browser_window_controller_private.mm
|
| index 7b6cc3e37b89c0502e5fb8e9b44669d5041e9057..89bab85429536e56626929eda2e90a580e00be0b 100644
|
| --- a/chrome/browser/ui/cocoa/browser_window_controller_private.mm
|
| +++ b/chrome/browser/ui/cocoa/browser_window_controller_private.mm
|
| @@ -190,7 +190,7 @@ willPositionSheet:(NSWindow*)sheet
|
| NSView* tabStripView = [self tabStripView];
|
| CGFloat tabStripHeight = NSHeight([tabStripView frame]);
|
| maxY -= tabStripHeight;
|
| - [tabStripView setFrame:NSMakeRect(0, maxY, width, tabStripHeight)];
|
| + NSRect tabStripFrame = NSMakeRect(0, maxY, width, tabStripHeight);
|
|
|
| // In Yosemite fullscreen, manually add the fullscreen controls to the tab
|
| // strip.
|
| @@ -260,8 +260,15 @@ willPositionSheet:(NSWindow*)sheet
|
| }
|
| [tabStripController_ setRightIndentForControls:rightIndent];
|
|
|
| - // Go ahead and layout the tabs.
|
| - [tabStripController_ layoutTabsWithoutAnimation];
|
| + // It is undesirable to force tabs relayout when the tap strip's frame did
|
| + // not change, because it will interrupt tab animations in progress.
|
| + // In addition, there appears to be an AppKit bug on <10.9 where interrupting
|
| + // a tab animation resulted in the tab frame being the animator's target
|
| + // frame instead of the interrupting setFrame. (See http://crbug.com/415093)
|
| + if (!NSEqualRects(tabStripFrame, [tabStripView frame])){
|
| + [tabStripView setFrame:tabStripFrame];
|
| + [tabStripController_ layoutTabsWithoutAnimation];
|
| + }
|
|
|
| return maxY;
|
| }
|
|
|