Index: chrome/browser/ui/cocoa/omnibox/omnibox_popup_cell.h |
diff --git a/chrome/browser/ui/cocoa/omnibox/omnibox_popup_cell.h b/chrome/browser/ui/cocoa/omnibox/omnibox_popup_cell.h |
index d72200b95cb2c123b18ad203ec63938ddb645744..703516311c17e5f7a02e9546dfadcc4b0e6484f6 100644 |
--- a/chrome/browser/ui/cocoa/omnibox/omnibox_popup_cell.h |
+++ b/chrome/browser/ui/cocoa/omnibox/omnibox_popup_cell.h |
@@ -12,51 +12,66 @@ |
class OmniboxPopupViewMac; |
-// OmniboxPopupCell overrides how backgrounds are displayed to |
-// handle hover versus selected. So long as we're in there, it also |
-// provides some default initialization. |
-@interface OmniboxPopupCell : NSButtonCell { |
+@interface OmniboxPopupCellData : NSObject<NSCopying> { |
@private |
- // The match which will be rendered for this row in omnibox dropdown. |
- AutocompleteMatch match_; |
- |
- // NSAttributedString instances for various match components. |
- base::scoped_nsobject<NSAttributedString> separator_; |
- base::scoped_nsobject<NSAttributedString> description_; |
- |
- base::scoped_nsobject<NSImage> answerImage_; |
+ // Left hand side of the separator (e.g. a hyphen). |
+ NSAttributedString* contents_; |
+ // Right hand side of the separator (e.g. a hyphen). |
+ NSAttributedString* description_; |
// NOTE: While |prefix_| is used only for postfix suggestions, it still needs |
// to be a member of the class. This allows the |NSAttributedString| instance |
// to stay alive between the call to |drawTitle| and the actual paint event |
// which accesses the |NSAttributedString| instance. |
- base::scoped_nsobject<NSAttributedString> prefix_; |
+ NSAttributedString* prefix_; |
- // The width of widest match contents in a set of infinite suggestions. |
- CGFloat maxMatchContentsWidth_; |
+ // Common icon that shows next to most rows in the list. |
+ NSImage* image_; |
+ // Uncommon icon that only shows on answer rows (e.g. weather). |
+ NSImage* answerImage_; |
// The offset at which the infinite suggestion contents should be displayed. |
CGFloat contentsOffset_; |
-} |
-- (void)setAnswerImage:(NSImage*)image; |
- |
-- (void)setMatch:(const AutocompleteMatch&)match; |
+ BOOL isContentsRTL_; |
+ AutocompleteMatch::Type matchType_; |
+} |
-- (NSAttributedString*)description; |
+@property(readonly, retain, nonatomic) NSAttributedString* contents; |
+@property(readonly, retain, nonatomic) NSAttributedString* description; |
+@property(readonly, retain, nonatomic) NSAttributedString* prefix; |
+@property(readonly, retain, nonatomic) NSImage* image; |
+@property(readonly, retain, nonatomic) NSImage* answerImage; |
+@property(readonly, nonatomic) CGFloat contentsOffset; |
+@property(readonly, nonatomic) BOOL isContentsRTL; |
+@property(readonly, nonatomic) AutocompleteMatch::Type matchType; |
-- (void)setMaxMatchContentsWidth:(CGFloat)maxMatchContentsWidth; |
+- (instancetype)initWithMatch:(const AutocompleteMatch&)match |
+ contentsOffset:(CGFloat)contentsOffset |
+ image:(NSImage*)image |
+ answerImage:(NSImage*)answerImage; |
-- (void)setContentsOffset:(CGFloat)contentsOffset; |
+// Each row is allowed to have a different value. |
+- (CGFloat)rowHeight; |
// Returns the width of the match contents. |
- (CGFloat)getMatchContentsWidth; |
+@end |
+ |
+// Overrides how cells are displayed. Uses information from |
+// OmniboxPopupCellData to draw suggestion results. |
+@interface OmniboxPopupCell : NSCell |
+ |
+- (void)drawMatchWithFrame:(NSRect)cellFrame inView:(NSView*)controlView; |
+ |
// Returns the offset of the start of the contents in the input text for the |
// given match. It is costly to compute this offset, so it is computed once and |
// shared by all OmniboxPopupCell instances through OmniboxPopupViewMac parent. |
+ (CGFloat)computeContentsOffset:(const AutocompleteMatch&)match; |
++ (NSAttributedString*)createSeparatorString; |
+ |
@end |
#endif // CHROME_BROWSER_UI_COCOA_OMNIBOX_OMNIBOX_POPUP_CELL_H_ |