Home | History | Annotate | Download | only in omnibox
      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 "chrome/browser/autocomplete/autocomplete_match.h"
     12 
     13 class 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