summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/cocoa/location_bar/autocomplete_text_field_cell.mm4
-rw-r--r--chrome/browser/cocoa/styled_text_field_cell.h25
-rw-r--r--chrome/browser/cocoa/styled_text_field_cell.mm15
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 =