| Index: chrome/browser/ui/cocoa/tabs/tab_strip_background_view.mm
|
| diff --git a/chrome/browser/ui/cocoa/tabs/tab_strip_background_view.mm b/chrome/browser/ui/cocoa/tabs/tab_strip_background_view.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d8fba5d570bdd23a5f4588d866e23aaed71ead7e
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/cocoa/tabs/tab_strip_background_view.mm
|
| @@ -0,0 +1,73 @@
|
| +// 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];
|
| + }
|
| +}
|
| +
|
| +- (void)viewWillMoveToWindow:(NSWindow*)window {
|
| + if ([self window]) {
|
| + [[NSNotificationCenter defaultCenter]
|
| + removeObserver:self
|
| + name:NSWindowDidBecomeMainNotification
|
| + object:[self window]];
|
| + [[NSNotificationCenter defaultCenter]
|
| + removeObserver:self
|
| + name:NSWindowDidResignMainNotification
|
| + object:[self window]];
|
| + }
|
| + if (window) {
|
| + [[NSNotificationCenter defaultCenter]
|
| + addObserver:self
|
| + selector:@selector(windowFocusDidChange:)
|
| + name:NSWindowDidBecomeMainNotification
|
| + object:window];
|
| + [[NSNotificationCenter defaultCenter]
|
| + addObserver:self
|
| + selector:@selector(windowFocusDidChange:)
|
| + name:NSWindowDidResignMainNotification
|
| + object:window];
|
| + }
|
| +}
|
| +
|
| +- (void)windowFocusDidChange:(NSNotification*)notification {
|
| + // The theme image may depend on the window's active state.
|
| + [self setNeedsDisplay:YES];
|
| +}
|
| +
|
| +@end
|
|
|