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 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_COCOA_OMNIBOX_OMNIBOX_POPUP_CELL_H_ 6#define CHROME_BROWSER_UI_COCOA_OMNIBOX_OMNIBOX_POPUP_CELL_H_ 7 8#import <Cocoa/Cocoa.h> 9 10#include "base/mac/scoped_nsobject.h" 11#include "components/omnibox/autocomplete_match.h" 12 13class OmniboxPopupViewMac; 14 15// OmniboxPopupCell overrides how backgrounds are displayed to 16// handle hover versus selected. So long as we're in there, it also 17// provides some default initialization. 18@interface OmniboxPopupCell : NSButtonCell { 19 @private 20 // The popup view parent of this cell. 21 OmniboxPopupViewMac* parent_; 22 23 // The match which will be rendered for this row in omnibox dropdown. 24 AutocompleteMatch match_; 25 26 // NSAttributedString instances for various match components. 27 base::scoped_nsobject<NSAttributedString> separator_; 28 base::scoped_nsobject<NSAttributedString> description_; 29 30 // NOTE: While |prefix_| is used only for postfix suggestions, it still needs 31 // to be a member of the class. This allows the |NSAttributedString| instance 32 // to stay alive between the call to |drawTitle| and the actual paint event 33 // which accesses the |NSAttributedString| instance. 34 base::scoped_nsobject<NSAttributedString> prefix_; 35 36 // The width of widest match contents in a set of infinite suggestions. 37 CGFloat maxMatchContentsWidth_; 38 39 // The offset at which the infinite suggesiton contents should be displayed. 40 CGFloat contentsOffset_; 41} 42 43- (void)setMatch:(const AutocompleteMatch&)match; 44 45- (void)setMaxMatchContentsWidth:(CGFloat)maxMatchContentsWidth; 46 47- (void)setContentsOffset:(CGFloat)contentsOffset; 48 49// Returns the width of the match contents. 50- (CGFloat)getMatchContentsWidth; 51 52// Returns the offset of the start of the contents in the input text for the 53// given match. It is costly to compute this offset, so it is computed once and 54// shared by all OmniboxPopupCell instances through OmniboxPopupViewMac parent. 55+ (CGFloat)computeContentsOffset:(const AutocompleteMatch&)match; 56 57@end 58 59#endif // CHROME_BROWSER_UI_COCOA_OMNIBOX_OMNIBOX_POPUP_CELL_H_ 60