summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-22 20:27:11 +0000
committerpinkerton@chromium.org <pinkerton@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-22 20:27:11 +0000
commitf93ec2a6a9fc2c3d5913cf68473867273f129ac5 (patch)
treeb06f8f5ba0311d8ed90196e8da7c070372b21c52
parent9433b09c74817440af648e2725e39bfe5de7ee60 (diff)
downloadchromium_src-f93ec2a6a9fc2c3d5913cf68473867273f129ac5.zip
chromium_src-f93ec2a6a9fc2c3d5913cf68473867273f129ac5.tar.gz
chromium_src-f93ec2a6a9fc2c3d5913cf68473867273f129ac5.tar.bz2
Merge 53224 - 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 TBR=pinkerton@chromium.org git-svn-id: svn://svn.chromium.org/chrome/branches/472/src@53375 0039d316-1c4b-4281-b951-d872f2087c98
-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 =