Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(558)

Side by Side Diff: chrome/browser/ui/cocoa/background_gradient_view.mm

Issue 2336463002: Make the edge where BackgroundGradientView draws a divider selectable. (Closed)
Patch Set: Put back the highlight above the download shelf (though it'll go away w/ MD) Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/cocoa/background_gradient_view.h" 5 #include "chrome/browser/ui/cocoa/background_gradient_view.h"
6 6
7 #import "chrome/browser/themes/theme_properties.h" 7 #import "chrome/browser/themes/theme_properties.h"
8 #import "chrome/browser/themes/theme_service.h" 8 #import "chrome/browser/themes/theme_service.h"
9 #import "chrome/browser/ui/cocoa/themed_window.h" 9 #import "chrome/browser/ui/cocoa/themed_window.h"
10 #include "chrome/grit/theme_resources.h" 10 #include "chrome/grit/theme_resources.h"
11 #import "ui/base/cocoa/nsgraphics_context_additions.h" 11 #import "ui/base/cocoa/nsgraphics_context_additions.h"
12 #import "ui/base/cocoa/nsview_additions.h" 12 #import "ui/base/cocoa/nsview_additions.h"
13 #include "ui/base/material_design/material_design_controller.h" 13 #include "ui/base/material_design/material_design_controller.h"
14 14
15 @interface BackgroundGradientView (Private)
16 - (void)commonInit;
17 - (NSColor*)backgroundImageColor;
18 @end
19
20 @implementation BackgroundGradientView 15 @implementation BackgroundGradientView
21 16
22 @synthesize showsDivider = showsDivider_; 17 @synthesize showsDivider = showsDivider_;
18 @synthesize dividerEdge = dividerEdge_;
23 19
24 - (id)initWithFrame:(NSRect)frameRect { 20 - (id)initWithFrame:(NSRect)frameRect {
25 if ((self = [super initWithFrame:frameRect])) { 21 if ((self = [super initWithFrame:frameRect])) {
26 [self commonInit]; 22 [self commonInit];
27 } 23 }
28 return self; 24 return self;
29 } 25 }
30 26
31 - (id)initWithCoder:(NSCoder*)decoder { 27 - (id)initWithCoder:(NSCoder*)decoder {
32 if ((self = [super initWithCoder:decoder])) { 28 if ((self = [super initWithCoder:decoder])) {
33 [self commonInit]; 29 [self commonInit];
34 } 30 }
35 return self; 31 return self;
36 } 32 }
37 33
38 - (void)commonInit { 34 - (void)commonInit {
39 showsDivider_ = YES; 35 showsDivider_ = YES;
36 dividerEdge_ = NSMinYEdge;
40 } 37 }
41 38
42 - (void)setShowsDivider:(BOOL)show { 39 - (void)setShowsDivider:(BOOL)show {
43 if (showsDivider_ == show) 40 if (showsDivider_ == show)
44 return; 41 return;
45 showsDivider_ = show; 42 showsDivider_ = show;
46 [self setNeedsDisplay:YES]; 43 [self setNeedsDisplay:YES];
47 } 44 }
48 45
46 - (void)setDividerEdge:(NSRectEdge)dividerEdge {
47 if (dividerEdge_ == dividerEdge)
48 return;
49 dividerEdge_ = dividerEdge;
50 [self setNeedsDisplay:YES];
51 }
52
49 - (NSPoint)patternPhase { 53 - (NSPoint)patternPhase {
50 return [[self window] 54 return [[self window]
51 themeImagePositionForAlignment:THEME_IMAGE_ALIGN_WITH_TAB_STRIP]; 55 themeImagePositionForAlignment:THEME_IMAGE_ALIGN_WITH_TAB_STRIP];
52 } 56 }
53 57
54 - (void)drawRect:(NSRect)dirtyRect { 58 - (void)drawRect:(NSRect)dirtyRect {
55 [[NSGraphicsContext currentContext] 59 [[NSGraphicsContext currentContext]
56 cr_setPatternPhase:[self patternPhase] 60 cr_setPatternPhase:[self patternPhase]
57 forView:[self cr_viewBeingDrawnTo]]; 61 forView:[self cr_viewBeingDrawnTo]];
58 62
59 const ui::ThemeProvider* themeProvider = [[self window] themeProvider]; 63 const ui::ThemeProvider* themeProvider = [[self window] themeProvider];
60 if (themeProvider && !themeProvider->UsingSystemTheme()) { 64 if (themeProvider && !themeProvider->UsingSystemTheme()) {
61 // If the background image is semi transparent then we need something 65 // If the background image is semi transparent then we need something
62 // to blend against. Using 20% black gives us a color similar to Windows. 66 // to blend against. Using 20% black gives us a color similar to Windows.
63 [[NSColor colorWithCalibratedWhite:0.2 alpha:1.0] set]; 67 [[NSColor colorWithCalibratedWhite:0.2 alpha:1.0] set];
64 NSRectFill(dirtyRect); 68 NSRectFill(dirtyRect);
65 } 69 }
66 70
67 [[self backgroundImageColor] set]; 71 [[self backgroundImageColor] set];
68 NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver); 72 NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver);
69 73
70 if (showsDivider_) { 74 if (showsDivider_) {
71 // Draw bottom stroke 75 // Draw stroke
72 NSRect borderRect, contentRect; 76 NSRect borderRect, contentRect;
73 NSDivideRect([self bounds], &borderRect, &contentRect, [self cr_lineWidth], 77 NSDivideRect([self bounds], &borderRect, &contentRect, [self cr_lineWidth],
74 NSMinYEdge); 78 dividerEdge_);
75 if (NSIntersectsRect(borderRect, dirtyRect)) { 79 if (NSIntersectsRect(borderRect, dirtyRect)) {
76 [[self strokeColor] set]; 80 [[self strokeColor] set];
77 NSRectFillUsingOperation(NSIntersectionRect(borderRect, dirtyRect), 81 NSRectFillUsingOperation(NSIntersectionRect(borderRect, dirtyRect),
78 NSCompositeSourceOver); 82 NSCompositeSourceOver);
79 } 83 }
80 } 84 }
81 } 85 }
82 86
83 - (NSColor*)strokeColor { 87 - (NSColor*)strokeColor {
84 NSWindow* window = [self window]; 88 NSWindow* window = [self window];
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 179
176 - (void)windowDidChangeTheme { 180 - (void)windowDidChangeTheme {
177 [self setNeedsDisplay:YES]; 181 [self setNeedsDisplay:YES];
178 } 182 }
179 183
180 - (void)windowDidChangeActive { 184 - (void)windowDidChangeActive {
181 [self setNeedsDisplay:YES]; 185 [self setNeedsDisplay:YES];
182 } 186 }
183 187
184 @end 188 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698