Index: chrome/browser/ui/cocoa/autofill/password_generation_popup_view_cocoa.mm |
diff --git a/chrome/browser/ui/cocoa/autofill/password_generation_popup_view_cocoa.mm b/chrome/browser/ui/cocoa/autofill/password_generation_popup_view_cocoa.mm |
index 304bb1a7c0f6d977483f58ea88dc1efb94b79b8c..dea1d21d9299da5170313797e4d86b19bbd790fd 100644 |
--- a/chrome/browser/ui/cocoa/autofill/password_generation_popup_view_cocoa.mm |
+++ b/chrome/browser/ui/cocoa/autofill/password_generation_popup_view_cocoa.mm |
@@ -10,6 +10,7 @@ |
#include "chrome/browser/ui/autofill/autofill_popup_view.h" |
#include "chrome/browser/ui/autofill/popup_constants.h" |
#include "chrome/browser/ui/cocoa/autofill/password_generation_popup_view_bridge.h" |
+#import "chrome/browser/ui/cocoa/hyperlink_text_view.h" |
#import "chrome/browser/ui/cocoa/l10n_util.h" |
#include "components/autofill/core/browser/popup_item_ids.h" |
#include "grit/ui_resources.h" |
@@ -18,6 +19,7 @@ |
#include "ui/gfx/font_list.h" |
#include "ui/gfx/image/image.h" |
#include "ui/gfx/point.h" |
+#include "ui/gfx/range/range.h" |
#include "ui/gfx/rect.h" |
#include "ui/gfx/text_constants.h" |
@@ -58,26 +60,29 @@ NSColor* HelpTextColor() { |
frame:(NSRect)frame { |
if (self = [super initWithDelegate:controller frame:frame]) { |
controller_ = controller; |
- NSFont* font = controller_->font_list().GetPrimaryFont().GetNativeFont(); |
- |
- passwordField_ = [self textFieldWithText:controller_->password() |
- withFont:font |
- color:[self nameColor] |
- alignment:NSLeftTextAlignment]; |
- [self addSubview:passwordField_]; |
- |
- passwordSubtextField_ = |
- [self textFieldWithText:controller_->SuggestedText() |
- withFont:font |
- color:[self subtextColor] |
- alignment:NSRightTextAlignment]; |
- [self addSubview:passwordSubtextField_]; |
- |
- helpTextField_ = [self textFieldWithText:controller_->HelpText() |
- withFont:font |
- color:HelpTextColor() |
- alignment:NSLeftTextAlignment]; |
- [self addSubview:helpTextField_]; |
+ |
+ passwordView_ = [self textViewWithText:controller_->password() |
groby-ooo-7-16
2014/05/30 18:05:01
I'm not clear why you're switching the password fi
Patrick Dubroy
2014/06/02 07:46:52
It's not really necessary, I just thought NSTextVi
|
+ color:[self nameColor] |
+ alignment:NSLeftTextAlignment]; |
+ [self addSubview:passwordView_]; |
+ |
+ passwordSubtextView_ = [self textViewWithText:controller_->SuggestedText() |
+ color:[self subtextColor] |
+ alignment:NSRightTextAlignment]; |
+ [self addSubview:passwordSubtextView_]; |
+ |
+ helpTextView_ = |
groby-ooo-7-16
2014/05/30 18:05:01
IIRC, we prefer scoped_nsobject over autoreleased
Patrick Dubroy
2014/06/02 07:46:52
Done. Though I'm not sure whether you meant that I
|
+ [[[HyperlinkTextView alloc] initWithFrame:NSZeroRect] autorelease]; |
+ [helpTextView_ setMessage:base::SysUTF16ToNSString(controller_->HelpText()) |
+ withFont:[self textFont] |
+ messageColor:HelpTextColor()]; |
+ [helpTextView_ addLinkRange:controller_->HelpTextLinkRange().ToNSRange() |
+ withName:@"" |
+ linkColor:[NSColor blueColor]]; |
+ [helpTextView_ setDelegate:self]; |
+ [[helpTextView_ textContainer] setLineFragmentPadding:0.0f]; |
+ [helpTextView_ setVerticallyResizable:YES]; |
+ [self addSubview:helpTextView_]; |
} |
return self; |
@@ -115,9 +120,9 @@ NSColor* HelpTextColor() { |
#pragma mark Public API: |
- (void)updateBoundsAndRedrawPopup { |
- [self positionTextField:passwordField_ inRect:[self passwordBounds]]; |
- [self positionTextField:passwordSubtextField_ inRect:[self passwordBounds]]; |
- [self positionTextField:helpTextField_ inRect:[self helpBounds]]; |
+ [self positionTextView:passwordView_ inRect:[self passwordBounds]]; |
+ [self positionTextView:passwordSubtextView_ inRect:[self passwordBounds]]; |
+ [self positionTextView:helpTextView_ inRect:[self helpBounds]]; |
[super updateBoundsAndRedrawPopup]; |
} |
@@ -127,18 +132,26 @@ NSColor* HelpTextColor() { |
[super delegateDestroyed]; |
} |
+#pragma mark NSTextViewDelegate implementation: |
+ |
+- (BOOL)textView:(NSTextView *)textView |
+ clickedOnLink:(id)link |
+ atIndex:(NSUInteger)charIndex { |
+ controller_->OnSavedPasswordsLinkClicked(); |
+ return YES; |
+} |
+ |
#pragma mark Private helpers: |
-- (NSTextField*)textFieldWithText:(const base::string16&)text |
- withFont:(NSFont*)font |
- color:(NSColor*)color |
- alignment:(NSTextAlignment)alignment { |
+- (NSTextView*)textViewWithText:(const base::string16&)text |
+ color:(NSColor*)color |
+ alignment:(NSTextAlignment)alignment { |
scoped_nsobject<NSMutableParagraphStyle> paragraphStyle( |
[[NSMutableParagraphStyle alloc] init]); |
[paragraphStyle setAlignment:alignment]; |
NSDictionary* textAttributes = @{ |
- NSFontAttributeName : font, |
+ NSFontAttributeName : [self textFont], |
NSForegroundColorAttributeName : color, |
NSParagraphStyleAttributeName : paragraphStyle |
}; |
@@ -148,24 +161,22 @@ NSColor* HelpTextColor() { |
initWithString:base::SysUTF16ToNSString(text) |
attributes:textAttributes]); |
- NSTextField* textField = |
- [[[NSTextField alloc] initWithFrame:NSZeroRect] autorelease]; |
- [textField setAttributedStringValue:attributedString]; |
- [textField setEditable:NO]; |
- [textField setSelectable:NO]; |
- [textField setDrawsBackground:NO]; |
- [textField setBezeled:NO]; |
- |
- return textField; |
+ NSTextView* textView = |
+ [[[NSTextView alloc] initWithFrame:NSZeroRect] autorelease]; |
+ [[textView textStorage] setAttributedString:attributedString]; |
+ [[textView textContainer] setLineFragmentPadding:0.0f]; |
+ [textView setSelectable:NO]; |
+ [textView setDrawsBackground:NO]; |
+ return textView; |
} |
-- (void)positionTextField:(NSTextField*)textField inRect:(NSRect)bounds { |
+- (void)positionTextView:(NSTextView*)textView inRect:(NSRect)bounds { |
NSRect frame = NSInsetRect(bounds, controller_->kHorizontalPadding, 0); |
- [textField setFrame:frame]; |
+ [textView setFrame:frame]; |
// Center the text vertically within the bounds. |
- NSSize delta = cocoa_l10n_util::WrapOrSizeToFit(textField); |
- [textField setFrameOrigin: |
+ NSSize delta = cocoa_l10n_util::WrapOrSizeToFit(textView); |
+ [textView setFrameOrigin: |
NSInsetRect(frame, 0, floor(-delta.height/2)).origin]; |
} |
@@ -181,4 +192,8 @@ NSColor* HelpTextColor() { |
return NSRectFromCGRect(controller_->divider_bounds().ToCGRect()); |
} |
+- (NSFont*)textFont { |
+ return controller_->font_list().GetPrimaryFont().GetNativeFont(); |
+} |
+ |
@end |