OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #import "chrome/browser/ui/cocoa/autofill/autofill_suggestion_container.h" | 5 #import "chrome/browser/ui/cocoa/autofill/autofill_suggestion_container.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 CGFloat baseline_; // The cell's baseline adjustment. | 47 CGFloat baseline_; // The cell's baseline adjustment. |
48 } | 48 } |
49 | 49 |
50 // Adjust the cell's baseline so that the lower edge of the image aligns with | 50 // Adjust the cell's baseline so that the lower edge of the image aligns with |
51 // the longest descender, not the font baseline | 51 // the longest descender, not the font baseline |
52 - (void)adjustBaselineForFont:(NSFont*)font; | 52 - (void)adjustBaselineForFont:(NSFont*)font; |
53 | 53 |
54 @end | 54 @end |
55 | 55 |
56 | 56 |
| 57 @interface AutofillSuggestionView : NSView { |
| 58 @private |
| 59 // The main input field - only view not ignoring mouse events. |
| 60 NSView* inputField_; |
| 61 } |
| 62 |
| 63 @property (assign, nonatomic) NSView* inputField; |
| 64 |
| 65 @end |
| 66 |
| 67 |
| 68 // The suggestion container should ignore any mouse events unless they occur |
| 69 // within the bounds of an editable field. |
| 70 @implementation AutofillSuggestionView |
| 71 |
| 72 @synthesize inputField = inputField_; |
| 73 |
| 74 - (NSView*)hitTest:(NSPoint)point { |
| 75 NSView* hitView = [super hitTest:point]; |
| 76 if ([hitView isDescendantOf:inputField_]) |
| 77 return hitView; |
| 78 |
| 79 return nil; |
| 80 } |
| 81 |
| 82 @end |
| 83 |
| 84 |
57 @implementation IconAttachmentCell | 85 @implementation IconAttachmentCell |
58 | 86 |
59 - (NSPoint)cellBaselineOffset { | 87 - (NSPoint)cellBaselineOffset { |
60 return NSMakePoint(0.0, baseline_); | 88 return NSMakePoint(0.0, baseline_); |
61 } | 89 } |
62 | 90 |
63 // Ensure proper padding between text and icon. | 91 // Ensure proper padding between text and icon. |
64 - (NSSize)cellSize { | 92 - (NSSize)cellSize { |
65 NSSize size = [super cellSize]; | 93 NSSize size = [super cellSize]; |
66 size.width += kAroundTextPadding; | 94 size.width += kAroundTextPadding; |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 [paragraphStyle setLineSpacing:0.5 * [[label_ font] pointSize]]; | 151 [paragraphStyle setLineSpacing:0.5 * [[label_ font] pointSize]]; |
124 [label_ setDefaultParagraphStyle:paragraphStyle]; | 152 [label_ setDefaultParagraphStyle:paragraphStyle]; |
125 | 153 |
126 inputField_.reset([[AutofillTextField alloc] initWithFrame:NSZeroRect]); | 154 inputField_.reset([[AutofillTextField alloc] initWithFrame:NSZeroRect]); |
127 [inputField_ setHidden:YES]; | 155 [inputField_ setHidden:YES]; |
128 | 156 |
129 spacer_.reset([[NSBox alloc] initWithFrame:NSZeroRect]); | 157 spacer_.reset([[NSBox alloc] initWithFrame:NSZeroRect]); |
130 [spacer_ setBoxType:NSBoxSeparator]; | 158 [spacer_ setBoxType:NSBoxSeparator]; |
131 [spacer_ setBorderType:NSLineBorder]; | 159 [spacer_ setBorderType:NSLineBorder]; |
132 | 160 |
133 base::scoped_nsobject<NSView> view([[NSView alloc] initWithFrame:NSZeroRect]); | 161 base::scoped_nsobject<AutofillSuggestionView> view( |
| 162 [[AutofillSuggestionView alloc] initWithFrame:NSZeroRect]); |
134 [view setSubviews: | 163 [view setSubviews: |
135 @[ label_, inputField_, spacer_ ]]; | 164 @[ label_, inputField_, spacer_ ]]; |
| 165 [view setInputField:inputField_]; |
136 [self setView:view]; | 166 [self setView:view]; |
137 } | 167 } |
138 | 168 |
139 - (void)setSuggestionText:(NSString*)line | 169 - (void)setSuggestionText:(NSString*)line |
140 icon:(NSImage*)icon | 170 icon:(NSImage*)icon |
141 wrapText:(BOOL)wrapText { | 171 wrapText:(BOOL)wrapText { |
142 [label_ setString:@""]; | 172 [label_ setString:@""]; |
143 | 173 |
144 if ([icon size].width) { | 174 if ([icon size].width) { |
145 base::scoped_nsobject<IconAttachmentCell> cell( | 175 base::scoped_nsobject<IconAttachmentCell> cell( |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 // Due to fixed width, fields are guaranteed to not overlap. | 274 // Due to fixed width, fields are guaranteed to not overlap. |
245 DCHECK_LE(NSMaxX(labelFrame), NSMinX(inputFieldFrame)); | 275 DCHECK_LE(NSMaxX(labelFrame), NSMinX(inputFieldFrame)); |
246 } | 276 } |
247 | 277 |
248 [spacer_ setFrame:spacerFrame]; | 278 [spacer_ setFrame:spacerFrame]; |
249 [label_ setFrame:labelFrame]; | 279 [label_ setFrame:labelFrame]; |
250 [[self view] setFrameSize:preferredContainerSize]; | 280 [[self view] setFrameSize:preferredContainerSize]; |
251 } | 281 } |
252 | 282 |
253 @end | 283 @end |
OLD | NEW |