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

Side by Side Diff: chrome/browser/ui/cocoa/find_bar/find_bar_view.mm

Issue 664223002: MacViews: Get views based FindBar to compile on the Mac. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update guards Created 6 years, 2 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
(Empty)
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #import "chrome/browser/ui/cocoa/find_bar/find_bar_view.h"
6
7 #import "chrome/browser/ui/cocoa/themed_window.h"
8 #import "chrome/browser/ui/cocoa/url_drop_target.h"
9 #import "chrome/browser/ui/cocoa/view_id_util.h"
10 #import "ui/base/cocoa/nsgraphics_context_additions.h"
11 #import "ui/base/cocoa/nsview_additions.h"
12 #include "ui/gfx/scoped_ns_graphics_context_save_gstate_mac.h"
13
14 namespace {
15 CGFloat kCurveSize = 8;
16 } // end namespace
17
18 @implementation FindBarView
19
20 - (id)initWithFrame:(NSRect)frame {
21 if ((self = [super initWithFrame:frame])) {
22 // Give this view its own layer so that it can appear over the web contents
23 // view's layer. Layer squashing is not helpful for this view because
24 // NSTextField will correctly anti-alias text on 10.8 and beyond.
25 [self setWantsLayer:YES];
26 }
27 return self;
28 }
29
30 - (void)awakeFromNib {
31 // Register for all the drag types handled by the RWHVCocoa.
32 [self registerForDraggedTypes:[URLDropTargetHandler handledDragTypes]];
33 }
34
35 - (void)drawRect:(NSRect)rect {
36 const CGFloat lineWidth = [self cr_lineWidth];
37 const CGFloat halfLineWidth = lineWidth / 2.0;
38
39 // TODO(rohitrao): Make this prettier.
40 rect = NSInsetRect([self bounds], halfLineWidth, halfLineWidth);
41 rect = NSOffsetRect(rect, 0, lineWidth);
42
43 NSPoint topLeft = NSMakePoint(NSMinX(rect), NSMaxY(rect));
44 NSPoint topRight = NSMakePoint(NSMaxX(rect), NSMaxY(rect));
45 NSPoint midLeft1 =
46 NSMakePoint(NSMinX(rect) + kCurveSize, NSMaxY(rect) - kCurveSize);
47 NSPoint midLeft2 =
48 NSMakePoint(NSMinX(rect) + kCurveSize, NSMinY(rect) + kCurveSize);
49 NSPoint midRight1 =
50 NSMakePoint(NSMaxX(rect) - kCurveSize, NSMinY(rect) + kCurveSize);
51 NSPoint midRight2 =
52 NSMakePoint(NSMaxX(rect) - kCurveSize, NSMaxY(rect) - kCurveSize);
53 NSPoint bottomLeft =
54 NSMakePoint(NSMinX(rect) + (2 * kCurveSize), NSMinY(rect));
55 NSPoint bottomRight =
56 NSMakePoint(NSMaxX(rect) - (2 * kCurveSize), NSMinY(rect));
57
58 NSBezierPath* path = [NSBezierPath bezierPath];
59 [path moveToPoint:topLeft];
60 [path curveToPoint:midLeft1
61 controlPoint1:NSMakePoint(midLeft1.x, topLeft.y)
62 controlPoint2:NSMakePoint(midLeft1.x, topLeft.y)];
63 [path lineToPoint:midLeft2];
64 [path curveToPoint:bottomLeft
65 controlPoint1:NSMakePoint(midLeft2.x, bottomLeft.y)
66 controlPoint2:NSMakePoint(midLeft2.x, bottomLeft.y)];
67
68 [path lineToPoint:bottomRight];
69 [path curveToPoint:midRight1
70 controlPoint1:NSMakePoint(midRight1.x, bottomLeft.y)
71 controlPoint2:NSMakePoint(midRight1.x, bottomLeft.y)];
72 [path lineToPoint:midRight2];
73 [path curveToPoint:topRight
74 controlPoint1:NSMakePoint(midRight2.x, topLeft.y)
75 controlPoint2:NSMakePoint(midRight2.x, topLeft.y)];
76
77 {
78 gfx::ScopedNSGraphicsContextSaveGState scopedGState;
79 NSGraphicsContext* context = [NSGraphicsContext currentContext];
80 [path addClip];
81
82 // Set the pattern phase
83 NSPoint position = [[self window]
84 themeImagePositionForAlignment:THEME_IMAGE_ALIGN_WITH_TAB_STRIP];
85 [context cr_setPatternPhase:position forView:self];
86
87 [super drawBackgroundWithOpaque:YES];
88 }
89
90 [[self strokeColor] set];
91 [path setLineWidth:lineWidth];
92 [path stroke];
93 }
94
95 // The findbar is mostly opaque, but has an 8px transparent border on the left
96 // and right sides (see |kCurveSize|). This is an artifact of the way it is
97 // drawn. We override hitTest to return nil for points in this transparent
98 // area.
99 - (NSView*)hitTest:(NSPoint)point {
100 NSView* hitView = [super hitTest:point];
101 if (hitView == self) {
102 // |rect| is approximately equivalent to the opaque area of the findbar.
103 NSRect rect = NSInsetRect([self bounds], kCurveSize, 0);
104 if (!NSMouseInRect(point, rect, [self isFlipped]))
105 return nil;
106 }
107
108 return hitView;
109 }
110
111 // Eat all mouse events, to prevent clicks from falling through to views below.
112 - (void)mouseDown:(NSEvent *)theEvent {
113 }
114
115 - (void)rightMouseDown:(NSEvent *)theEvent {
116 }
117
118 - (void)otherMouseDown:(NSEvent *)theEvent {
119 }
120
121 - (void)mouseUp:(NSEvent *)theEvent {
122 }
123
124 - (void)rightMouseUp:(NSEvent *)theEvent {
125 }
126
127 - (void)otherMouseUp:(NSEvent *)theEvent {
128 }
129
130 - (void)mouseMoved:(NSEvent *)theEvent {
131 }
132
133 - (void)mouseDragged:(NSEvent *)theEvent {
134 }
135
136 - (void)rightMouseDragged:(NSEvent *)theEvent {
137 }
138
139 - (void)otherMouseDragged:(NSEvent *)theEvent {
140 }
141
142 // Eat drag operations, to prevent drags from going through to the views below.
143 - (NSDragOperation)draggingEntered:(id<NSDraggingInfo>)info {
144 return NSDragOperationNone;
145 }
146
147 // Specifies that mouse events over this view should be ignored by the
148 // render host.
149 - (BOOL)nonWebContentView {
150 return YES;
151 }
152
153 @end
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/find_bar/find_bar_view.h ('k') | chrome/browser/ui/cocoa/find_bar/find_bar_view_cocoa.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698