Index: chrome/browser/ui/cocoa/autofill/autofill_dialog_cocoa.mm |
diff --git a/chrome/browser/ui/cocoa/autofill/autofill_dialog_cocoa.mm b/chrome/browser/ui/cocoa/autofill/autofill_dialog_cocoa.mm |
index 2751e272df0273623ec577c0dd34337d8d441ce5..0198b582c8bbdf38cfb63950ddd058f7fb784e9c 100644 |
--- a/chrome/browser/ui/cocoa/autofill/autofill_dialog_cocoa.mm |
+++ b/chrome/browser/ui/cocoa/autofill/autofill_dialog_cocoa.mm |
@@ -6,6 +6,7 @@ |
#include "base/bind.h" |
#include "base/mac/bundle_locations.h" |
+#include "base/mac/foundation_util.h" |
#include "base/mac/scoped_nsobject.h" |
#include "base/message_loop/message_loop.h" |
#include "base/strings/sys_string_conversions.h" |
@@ -14,10 +15,12 @@ |
#import "chrome/browser/ui/cocoa/autofill/autofill_account_chooser.h" |
#import "chrome/browser/ui/cocoa/autofill/autofill_details_container.h" |
#include "chrome/browser/ui/cocoa/autofill/autofill_dialog_constants.h" |
+#import "chrome/browser/ui/cocoa/autofill/autofill_input_field.h" |
#import "chrome/browser/ui/cocoa/autofill/autofill_main_container.h" |
#import "chrome/browser/ui/cocoa/autofill/autofill_overlay_controller.h" |
#import "chrome/browser/ui/cocoa/autofill/autofill_section_container.h" |
#import "chrome/browser/ui/cocoa/autofill/autofill_sign_in_container.h" |
+#import "chrome/browser/ui/cocoa/autofill/autofill_textfield.h" |
#import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_sheet.h" |
#import "chrome/browser/ui/cocoa/constrained_window/constrained_window_custom_window.h" |
#include "content/public/browser/web_contents.h" |
@@ -243,6 +246,28 @@ void AutofillDialogCocoa::OnConstrainedWindowClosed( |
@end |
+ |
+#pragma mark Field Editor |
+ |
+@interface AutofillDialogFieldEditor : NSTextView |
+@end |
+ |
+ |
+@implementation AutofillDialogFieldEditor |
+ |
+- (void)mouseDown:(NSEvent*)event { |
+ // Delegate _must_ be notified before mouseDown is complete, since it needs |
+ // to distinguish between mouseDown for already focused fields, and fields |
+ // that will receive focus as part of the mouseDown. |
+ AutofillTextField* textfield = |
+ base::mac::ObjCCastStrict<AutofillTextField>([self delegate]); |
+ [textfield onEditorMouseDown:self]; |
+ [super mouseDown:event]; |
+} |
+ |
+@end |
+ |
+ |
#pragma mark Window Controller |
@interface AutofillDialogWindowController () |
@@ -258,6 +283,24 @@ void AutofillDialogCocoa::OnConstrainedWindowClosed( |
@end |
+ |
+@implementation AutofillDialogWindowController (NSWindowDelegate) |
+ |
+- (id)windowWillReturnFieldEditor:(NSWindow*)window toObject:(id)client { |
+ AutofillTextField* textfield = base::mac::ObjCCast<AutofillTextField>(client); |
+ if (!textfield) |
+ return nil; |
+ |
+ if (!fieldEditor_) { |
+ fieldEditor_.reset([[AutofillDialogFieldEditor alloc] init]); |
+ [fieldEditor_ setFieldEditor:YES]; |
+ } |
+ return fieldEditor_.get(); |
+} |
+ |
+@end |
+ |
+ |
@implementation AutofillDialogWindowController |
- (id)initWithWebContents:(content::WebContents*)webContents |
@@ -269,6 +312,7 @@ void AutofillDialogCocoa::OnConstrainedWindowClosed( |
initWithContentRect:ui::kWindowSizeDeterminedLater]); |
if ((self = [super initWithWindow:window])) { |
+ [window setDelegate:self]; |
webContents_ = webContents; |
autofillDialog_ = autofillDialog; |