| Index: chrome/browser/ui/cocoa/tabs/tab_view.mm
|
| diff --git a/chrome/browser/ui/cocoa/tabs/tab_view.mm b/chrome/browser/ui/cocoa/tabs/tab_view.mm
|
| index e4271e259f3474d02f46c9478764ecfd08b7377b..d4abeb38ea361716baef34b35c4056ac74c05756 100644
|
| --- a/chrome/browser/ui/cocoa/tabs/tab_view.mm
|
| +++ b/chrome/browser/ui/cocoa/tabs/tab_view.mm
|
| @@ -302,6 +302,12 @@ const CGFloat kRapidCloseDist = 2.5;
|
|
|
| // Draws the active tab background.
|
| - (void)drawFillForActiveTab:(NSRect)dirtyRect {
|
| + gfx::ScopedNSGraphicsContextSaveGState scopedGState;
|
| + NSGraphicsContext* context = [NSGraphicsContext currentContext];
|
| + NSPoint position = [[self window]
|
| + themeImagePositionForAlignment:THEME_IMAGE_ALIGN_WITH_TAB_STRIP];
|
| + [context cr_setPatternPhase:position forView:self];
|
| +
|
| NSColor* backgroundImageColor = [self backgroundColorForSelected:YES];
|
| [backgroundImageColor set];
|
|
|
| @@ -323,9 +329,6 @@ const CGFloat kRapidCloseDist = 2.5;
|
|
|
| ThemeService* themeProvider =
|
| static_cast<ThemeService*>([[self window] themeProvider]);
|
| - NSPoint position = [[self window]
|
| - themeImagePositionForAlignment: THEME_IMAGE_ALIGN_WITH_TAB_STRIP];
|
| - [context cr_setPatternPhase:position forView:self];
|
|
|
| CGImageRef mask([self tabClippingMask]);
|
| CGRect maskBounds = CGRectMake(0, 0, maskCacheWidth_, kMaskHeight);
|
| @@ -342,7 +345,10 @@ const CGFloat kRapidCloseDist = 2.5;
|
| if (dirtyRect.origin.y < 1)
|
| dirtyRect.origin.y = 2 * [self cr_lineWidth];
|
|
|
| - // Draw the tab background.
|
| + // Draw the tinted frame image.
|
| + NSPoint position = [[self window]
|
| + themeImagePositionForAlignment:THEME_IMAGE_ALIGN_WITH_FRAME];
|
| + [context cr_setPatternPhase:position forView:self];
|
| NSColor* backgroundImageColor = [self backgroundColorForSelected:NO];
|
| [backgroundImageColor set];
|
|
|
| @@ -354,6 +360,22 @@ const CGFloat kRapidCloseDist = 2.5;
|
| else
|
| NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver);
|
|
|
| + // If the theme is not the default theme, it may provide a custom overlay
|
| + // image. The overlay image is aligned with the top of the tab.
|
| + NSColor* overlayImageColor = nil;
|
| + if (themeProvider &&
|
| + themeProvider->HasCustomImage(IDR_THEME_TAB_BACKGROUND_OVERLAY)) {
|
| + overlayImageColor = themeProvider->GetNSImageColorNamed(
|
| + IDR_THEME_TAB_BACKGROUND_OVERLAY);
|
| + }
|
| + if (overlayImageColor) {
|
| + position = [[self window]
|
| + themeImagePositionForAlignment:THEME_IMAGE_ALIGN_WITH_TAB_STRIP];
|
| + [context cr_setPatternPhase:position forView:self];
|
| + [overlayImageColor set];
|
| + NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver);
|
| + }
|
| +
|
| // Draw the glow for hover and the overlay for alerts.
|
| CGFloat hoverAlpha = [self hoverAlpha];
|
| CGFloat alertAlpha = [self alertAlpha];
|
| @@ -374,7 +396,7 @@ const CGFloat kRapidCloseDist = 2.5;
|
| // theme machinery will make one if given a frame image. See
|
| // BrowserThemePack::GenerateTabBackgroundImages for details.
|
| BOOL hasCustomTheme = themeProvider &&
|
| - (themeProvider->HasCustomImage(IDR_THEME_TAB_BACKGROUND) ||
|
| + (themeProvider->HasCustomImage(IDR_THEME_TAB_BACKGROUND_OVERLAY) ||
|
| themeProvider->HasCustomImage(IDR_THEME_FRAME));
|
| // Draw a mouse hover gradient for the default themes.
|
| if (hoverAlpha > 0) {
|
|
|