diff options
-rw-r--r-- | chrome/browser/cocoa/location_bar/autocomplete_text_field_cell.mm | 4 | ||||
-rw-r--r-- | chrome/browser/cocoa/styled_text_field_cell.h | 25 | ||||
-rw-r--r-- | chrome/browser/cocoa/styled_text_field_cell.mm | 15 |
3 files changed, 39 insertions, 5 deletions
diff --git a/chrome/browser/cocoa/location_bar/autocomplete_text_field_cell.mm b/chrome/browser/cocoa/location_bar/autocomplete_text_field_cell.mm index edb9a64..8acb8ba 100644 --- a/chrome/browser/cocoa/location_bar/autocomplete_text_field_cell.mm +++ b/chrome/browser/cocoa/location_bar/autocomplete_text_field_cell.mm @@ -148,6 +148,10 @@ size_t CalculatePositionsInFrame( return kCornerRadius; } +- (BOOL)shouldDrawBezel { + return YES; +} + - (void)clearDecorations { leftDecorations_.clear(); rightDecorations_.clear(); diff --git a/chrome/browser/cocoa/styled_text_field_cell.h b/chrome/browser/cocoa/styled_text_field_cell.h index 7eb12a8..c89f7d1 100644 --- a/chrome/browser/cocoa/styled_text_field_cell.h +++ b/chrome/browser/cocoa/styled_text_field_cell.h @@ -2,6 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#ifndef CHROME_BROWSER_COCOA_STYLED_TEXT_FIELD_CELL_H_ +#define CHROME_BROWSER_COCOA_STYLED_TEXT_FIELD_CELL_H_ + #import <Cocoa/Cocoa.h> // StyledTextFieldCell customizes the look of the standard Cocoa text field. @@ -13,12 +16,11 @@ @interface StyledTextFieldCell : NSTextFieldCell { } -// Baseline adjust for the text in this cell. Defaults to 0. Subclasses should -// override as needed. -- (CGFloat)baselineAdjust; +@end -// Radius of the corners of the field. Defaults to square corners (0.0). -- (CGFloat)cornerRadius; +// Methods intended to be overridden by subclasses, not part of the public API +// and should not be called outside of subclasses. +@interface StyledTextFieldCell (ProtectedMethods) // Return the portion of the cell to show the text cursor over. The default // implementation returns the full |cellFrame|. Subclasses should override this @@ -31,4 +33,17 @@ // Subclasses should override this method if they add any decorations. - (NSRect)textFrameForFrame:(NSRect)cellFrame; +// Baseline adjust for the text in this cell. Defaults to 0. Subclasses should +// override as needed. +- (CGFloat)baselineAdjust; + +// Radius of the corners of the field. Defaults to square corners (0.0). +- (CGFloat)cornerRadius; + +// Returns YES if a light themed bezel should be drawn under the text field. +// Default implementation returns NO. +- (BOOL)shouldDrawBezel; + @end + +#endif // CHROME_BROWSER_COCOA_STYLED_TEXT_FIELD_CELL_H_ diff --git a/chrome/browser/cocoa/styled_text_field_cell.mm b/chrome/browser/cocoa/styled_text_field_cell.mm index 64fc0e4..5289175 100644 --- a/chrome/browser/cocoa/styled_text_field_cell.mm +++ b/chrome/browser/cocoa/styled_text_field_cell.mm @@ -85,6 +85,10 @@ private: return 0.0; } +- (BOOL)shouldDrawBezel { + return NO; +} + // Returns the same value as textCursorFrameForFrame, but does not call it // directly to avoid potential infinite loops. - (NSRect)textFrameForFrame:(NSRect)cellFrame { @@ -166,6 +170,17 @@ private: FrameRectWithInset(shadowFrame, 0.5, radius - 0.5, 1.0, shadowShade); } + // Draw optional bezel below bottom stroke. + if ([self shouldDrawBezel]) { + [[NSColor colorWithCalibratedWhite:0.96 alpha:1.0] set]; + NSRect bezelRect = NSMakeRect(cellFrame.origin.x, + NSMaxY(cellFrame) - 0.5, + NSWidth(cellFrame), + 1.0); + bezelRect = NSInsetRect(bezelRect, radius - 0.5, 0.0); + NSRectFill(bezelRect); + } + // Draw the focus ring if needed. if ([self showsFirstResponder]) { NSColor* color = |