Chromium Code Reviews| 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..b6cfa7b4154a06b67cf1ece38413631bf2ccd268 |
| --- /dev/null |
| +++ b/chrome/browser/ui/cocoa/tabs/tab_strip_background_view.mm |
| @@ -0,0 +1,69 @@ |
| +// 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]; |
| + // Pinstripe the top. |
| + if (themed) { |
| + CGFloat lineWidth = [self cr_lineWidth]; |
| + NSRect strokeRect = NSInsetRect(roundedRect, -lineWidth/2, lineWidth/2); |
|
erikchen
2014/09/27 00:23:33
I see that this logic is just copied from framed_b
Andre
2014/09/27 18:17:02
A path's stroke is drawn right on the line instead
Andre
2014/09/27 18:47:00
Uploaded a new patch to add this as comment.
|
| + 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 |