blob: 4b32010d44e65a67c702b90540b9b1f7ec77acf8 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "chrome/browser/ui/cocoa/tabs/tab_strip_background_view.h"
#import "chrome/browser/ui/cocoa/framed_browser_window.h"
#import "ui/base/cocoa/nsview_additions.h"
@implementation TabStripBackgroundView
- (void)drawRect:(NSRect)dirtyRect {
// Only the top corners are rounded. For simplicity, round all 4 corners but
// draw the bottom corners outside of the visible bounds.
float cornerRadius = 4.0;
NSRect roundedRect = [self bounds];
roundedRect.origin.y -= cornerRadius;
roundedRect.size.height += cornerRadius;
[[NSBezierPath bezierPathWithRoundedRect:roundedRect
xRadius:cornerRadius
yRadius:cornerRadius] addClip];
BOOL themed = [FramedBrowserWindow drawWindowThemeInDirtyRect:dirtyRect
forView:self
bounds:roundedRect
forceBlackBackground:NO];
// Draw a 1px border on the top edge and top corners.
if (themed) {
CGFloat lineWidth = [self cr_lineWidth];
// Inset the vertical lines by 0.5px so that the top line gets a full pixel.
// Outset the horizontal lines by 0.5px so that they are not visible, but
// still get the rounded corners to get a border.
NSRect strokeRect = NSInsetRect(roundedRect, -lineWidth/2, lineWidth/2);
NSBezierPath* path = [NSBezierPath bezierPathWithRoundedRect:strokeRect
xRadius:cornerRadius
yRadius:cornerRadius];
[path setLineWidth:lineWidth];
[[NSColor colorWithCalibratedWhite:1.0 alpha:0.5] set];
[path stroke];
}
}
// ThemedWindowDrawing implementation.
- (void)windowDidChangeTheme {
[self setNeedsDisplay:YES];
}
- (void)windowDidChangeActive {
[self setNeedsDisplay:YES];
}
@end