diff options
author | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-21 19:01:18 +0000 |
---|---|---|
committer | pinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-21 19:01:18 +0000 |
commit | 03626c0de3fcf0deac6c51585af7accfcffba294 (patch) | |
tree | ab386441b8312425635e9530cf427e7f985f3a1f /chrome/browser/cocoa | |
parent | 2afab22c09c10833b834354a69c26f1e6741b05c (diff) | |
download | chromium_src-03626c0de3fcf0deac6c51585af7accfcffba294.zip chromium_src-03626c0de3fcf0deac6c51585af7accfcffba294.tar.gz chromium_src-03626c0de3fcf0deac6c51585af7accfcffba294.tar.bz2 |
Conditionally draw a bezel below text fields, used for the omnibox.
BUG=49793
TEST=visual inspection. unit tests shouldn't leak or crash on drawing.
Review URL: http://codereview.chromium.org/3042014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53224 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa')
-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 = |