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

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: 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
17 @synthesize divider = divider_;
22 @synthesize showsDivider = showsDivider_; 18 @synthesize showsDivider = showsDivider_;
23 19
24 - (id)initWithFrame:(NSRect)frameRect { 20 - (void)setDivider:(BackgroundGradientViewDivider)divider {
25 if ((self = [super initWithFrame:frameRect])) { 21 if (divider_ == divider)
26 [self commonInit]; 22 return;
27 } 23 divider_ = divider;
28 return self; 24 [self setNeedsDisplay:YES];
29 }
30
31 - (id)initWithCoder:(NSCoder*)decoder {
32 if ((self = [super initWithCoder:decoder])) {
33 [self commonInit];
34 }
35 return self;
36 }
37
38 - (void)commonInit {
39 showsDivider_ = YES;
Nico 2016/09/12 13:45:55 This used to default to divider-on, now it default
Sidney San Martín 2016/09/14 17:46:59 Fixed, thanks.
40 } 25 }
41 26
42 - (void)setShowsDivider:(BOOL)show { 27 - (void)setShowsDivider:(BOOL)show {
43 if (showsDivider_ == show) 28 if (showsDivider_ == show)
44 return; 29 return;
45 showsDivider_ = show; 30 showsDivider_ = show;
46 [self setNeedsDisplay:YES]; 31 [self setNeedsDisplay:YES];
47 } 32 }
48 33
49 - (NSPoint)patternPhase { 34 - (NSPoint)patternPhase {
(...skipping 11 matching lines...) Expand all
61 // If the background image is semi transparent then we need something 46 // 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. 47 // to blend against. Using 20% black gives us a color similar to Windows.
63 [[NSColor colorWithCalibratedWhite:0.2 alpha:1.0] set]; 48 [[NSColor colorWithCalibratedWhite:0.2 alpha:1.0] set];
64 NSRectFill(dirtyRect); 49 NSRectFill(dirtyRect);
65 } 50 }
66 51
67 [[self backgroundImageColor] set]; 52 [[self backgroundImageColor] set];
68 NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver); 53 NSRectFillUsingOperation(dirtyRect, NSCompositeSourceOver);
69 54
70 if (showsDivider_) { 55 if (showsDivider_) {
71 // Draw bottom stroke 56 CGFloat lineWidth = [self cr_lineWidth];
72 NSRect borderRect, contentRect; 57 NSRect borderRect = NSMakeRect(0, 0, self.bounds.size.width, lineWidth);
73 NSDivideRect([self bounds], &borderRect, &contentRect, [self cr_lineWidth], 58
74 NSMinYEdge); 59 switch (divider_) {
60 case BackgroundGradientViewDivider::Bottom:
61 break;
62 case BackgroundGradientViewDivider::Top:
63 borderRect.origin.y = self.bounds.size.height - lineWidth;
64 break;
65 }
Nico 2016/09/12 13:45:55 These 7 lines are shorter as if (divider_ == Ba
Sidney San Martín 2016/09/14 17:46:59 I think I had an incomplete understanding of NSDiv
75 if (NSIntersectsRect(borderRect, dirtyRect)) { 66 if (NSIntersectsRect(borderRect, dirtyRect)) {
76 [[self strokeColor] set]; 67 [[self strokeColor] set];
77 NSRectFillUsingOperation(NSIntersectionRect(borderRect, dirtyRect), 68 NSRectFillUsingOperation(NSIntersectionRect(borderRect, dirtyRect),
78 NSCompositeSourceOver); 69 NSCompositeSourceOver);
79 } 70 }
80 } 71 }
81 } 72 }
82 73
83 - (NSColor*)strokeColor { 74 - (NSColor*)strokeColor {
84 NSWindow* window = [self window]; 75 NSWindow* window = [self window];
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 166
176 - (void)windowDidChangeTheme { 167 - (void)windowDidChangeTheme {
177 [self setNeedsDisplay:YES]; 168 [self setNeedsDisplay:YES];
178 } 169 }
179 170
180 - (void)windowDidChangeActive { 171 - (void)windowDidChangeActive {
181 [self setNeedsDisplay:YES]; 172 [self setNeedsDisplay:YES];
182 } 173 }
183 174
184 @end 175 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698