From c87b9b15489eecda01ef7f8f42d11a3b86a2f1de Mon Sep 17 00:00:00 2001 From: "isherman@chromium.org" Date: Fri, 24 Sep 2010 21:56:30 +0000 Subject: Mac: Ignore omnibox selection changes that come from programmatic events BUG=56149,56720 TEST=start typing a url, arrow around in the autocomplete popup menu -- the results should not change. Review URL: http://codereview.chromium.org/3397019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60530 0039d316-1c4b-4281-b951-d872f2087c98 --- .../cocoa/location_bar/autocomplete_text_field.mm | 21 ----------------- .../location_bar/autocomplete_text_field_editor.mm | 27 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 21 deletions(-) (limited to 'chrome') diff --git a/chrome/browser/cocoa/location_bar/autocomplete_text_field.mm b/chrome/browser/cocoa/location_bar/autocomplete_text_field.mm index 2598d10..4f18f68 100644 --- a/chrome/browser/cocoa/location_bar/autocomplete_text_field.mm +++ b/chrome/browser/cocoa/location_bar/autocomplete_text_field.mm @@ -253,27 +253,6 @@ } } -- (BOOL)textView:(NSTextView*)textView doCommandBySelector:(SEL)cmd { - // TODO(shess): Review code for cases where we're fruitlessly attempting to - // work in spite of not having an observer_. - if (observer_ && observer_->OnDoCommandBySelector(cmd)) { - return YES; - } - - // If the escape key was pressed and no revert happened and we're in - // fullscreen mode, make it resign key. - if (cmd == @selector(cancelOperation:)) { - BrowserWindowController* windowController = - [BrowserWindowController browserWindowControllerForView:self]; - if ([windowController isFullscreen]) { - [windowController focusTabContents]; - return YES; - } - } - - return NO; -} - // When the window resigns, make sure the autocomplete popup is no // longer visible, since the user's focus is elsewhere. - (void)windowDidResignKey:(NSNotification*)notification { diff --git a/chrome/browser/cocoa/location_bar/autocomplete_text_field_editor.mm b/chrome/browser/cocoa/location_bar/autocomplete_text_field_editor.mm index 9713e10..4904e50 100644 --- a/chrome/browser/cocoa/location_bar/autocomplete_text_field_editor.mm +++ b/chrome/browser/cocoa/location_bar/autocomplete_text_field_editor.mm @@ -308,6 +308,33 @@ } } +- (void)doCommandBySelector:(SEL)cmd { + // TODO(shess): Review code for cases where we're fruitlessly attempting to + // work in spite of not having an observer. + AutocompleteTextFieldObserver* observer = [self observer]; + + if (observer && observer->OnDoCommandBySelector(cmd)) { + // The observer should already be aware of any changes to the text, so + // setting |textChangedByKeyEvents_| to NO to prevent its OnDidChange() + // method from being called unnecessarily. + textChangedByKeyEvents_ = NO; + return; + } + + // If the escape key was pressed and no revert happened and we're in + // fullscreen mode, make it resign key. + if (cmd == @selector(cancelOperation:)) { + BrowserWindowController* windowController = + [BrowserWindowController browserWindowControllerForView:self]; + if ([windowController isFullscreen]) { + [windowController focusTabContents]; + return; + } + } + + [super doCommandBySelector:cmd]; +} + - (void)setAttributedString:(NSAttributedString*)aString { NSTextStorage* textStorage = [self textStorage]; DCHECK(textStorage); -- cgit v1.1