Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: chrome/browser/autocomplete/autocomplete_edit_view_mac.mm

Issue 155537: [Mac] Remove guard on FocusLocation() in autocomplete field. (Closed)
Patch Set: Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_edit_view_mac.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h" 5 #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h"
6 6
7 #include "base/sys_string_conversions.h" 7 #include "base/sys_string_conversions.h"
8 #include "chrome/browser/autocomplete/autocomplete_edit.h" 8 #include "chrome/browser/autocomplete/autocomplete_edit.h"
9 #include "chrome/browser/autocomplete/autocomplete_popup_model.h" 9 #include "chrome/browser/autocomplete/autocomplete_popup_model.h"
10 #include "chrome/browser/autocomplete/autocomplete_popup_view_mac.h" 10 #include "chrome/browser/autocomplete/autocomplete_popup_view_mac.h"
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 216
217 // Restore focus and selection if they were present when the tab 217 // Restore focus and selection if they were present when the tab
218 // was switched away. 218 // was switched away.
219 if (state->has_focus) { 219 if (state->has_focus) {
220 // TODO(shess): Unfortunately, there is no safe way to update 220 // TODO(shess): Unfortunately, there is no safe way to update
221 // this because TabStripController -selectTabWithContents:* is 221 // this because TabStripController -selectTabWithContents:* is
222 // also messing with focus. Both parties need to agree to 222 // also messing with focus. Both parties need to agree to
223 // store existing state before anyone tries to setup the new 223 // store existing state before anyone tries to setup the new
224 // state. Anyhow, it would look something like this. 224 // state. Anyhow, it would look something like this.
225 #if 0 225 #if 0
226 FocusLocation(); 226 [[field_ window] makeFirstResponder:field_];
227
228 // Must restore directly to evade model_->has_focus() guard.
229 [[field_ currentEditor] setSelectedRange:state->selection]; 227 [[field_ currentEditor] setSelectedRange:state->selection];
230 #endif 228 #endif
231 } 229 }
232 } 230 }
233 } else if (user_visible) { 231 } else if (user_visible) {
234 // Restore everything to the baseline look. 232 // Restore everything to the baseline look.
235 RevertAll(); 233 RevertAll();
236 // TODO(shess): Figure out how this case is used, to make sure 234 // TODO(shess): Figure out how this case is used, to make sure
237 // we're getting the selection and popup right. 235 // we're getting the selection and popup right.
238 236
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 DCHECK([field_ currentEditor]); 286 DCHECK([field_ currentEditor]);
289 return [[field_ currentEditor] selectedRange]; 287 return [[field_ currentEditor] selectedRange];
290 } 288 }
291 289
292 void AutocompleteEditViewMac::SetSelectedRange(const NSRange range) { 290 void AutocompleteEditViewMac::SetSelectedRange(const NSRange range) {
293 // This can be called when we don't have focus. For instance, when 291 // This can be called when we don't have focus. For instance, when
294 // the user clicks the "Go" button. 292 // the user clicks the "Go" button.
295 if (model_->has_focus()) { 293 if (model_->has_focus()) {
296 // TODO(shess): If |model_| thinks we have focus, this should not 294 // TODO(shess): If |model_| thinks we have focus, this should not
297 // be necessary. Try to convert to DCHECK(IsFirstResponder()). 295 // be necessary. Try to convert to DCHECK(IsFirstResponder()).
298 FocusLocation(); 296 if (![field_ currentEditor]) {
297 [[field_ window] makeFirstResponder:field_];
298 }
299 299
300 // TODO(shess): What if it didn't get first responder, and there is 300 // TODO(shess): What if it didn't get first responder, and there is
301 // no field editor? This will do nothing. Well, at least it won't 301 // no field editor? This will do nothing. Well, at least it won't
302 // crash. Think of something more productive to do, or prove that 302 // crash. Think of something more productive to do, or prove that
303 // it cannot occur and DCHECK appropriately. 303 // it cannot occur and DCHECK appropriately.
304 [[field_ currentEditor] setSelectedRange:range]; 304 [[field_ currentEditor] setSelectedRange:range];
305 } 305 }
306 } 306 }
307 307
308 void AutocompleteEditViewMac::SetWindowTextAndCaretPos(const std::wstring& text, 308 void AutocompleteEditViewMac::SetWindowTextAndCaretPos(const std::wstring& text,
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 void AutocompleteEditViewMac::OnDidResignKey() { 542 void AutocompleteEditViewMac::OnDidResignKey() {
543 ClosePopup(); 543 ClosePopup();
544 } 544 }
545 545
546 void AutocompleteEditViewMac::AcceptInput( 546 void AutocompleteEditViewMac::AcceptInput(
547 WindowOpenDisposition disposition, bool for_drop) { 547 WindowOpenDisposition disposition, bool for_drop) {
548 model_->AcceptInput(disposition, for_drop); 548 model_->AcceptInput(disposition, for_drop);
549 } 549 }
550 550
551 void AutocompleteEditViewMac::FocusLocation() { 551 void AutocompleteEditViewMac::FocusLocation() {
552 // -makeFirstResponder: will select the entire field_. If we're 552 [[field_ window] makeFirstResponder:field_];
553 // already firstResponder, it's likely that we want to retain the 553 DCHECK_EQ([field_ currentEditor], [[field_ window] firstResponder]);
554 // current selection.
555 if (![field_ currentEditor]) {
556 [[field_ window] makeFirstResponder:field_];
557 DCHECK_EQ([field_ currentEditor], [[field_ window] firstResponder]);
558 }
559 } 554 }
560 555
561 @implementation AutocompleteFieldDelegate 556 @implementation AutocompleteFieldDelegate
562 557
563 - initWithEditView:(AutocompleteEditViewMac*)view { 558 - initWithEditView:(AutocompleteEditViewMac*)view {
564 self = [super init]; 559 self = [super init];
565 if (self) { 560 if (self) {
566 edit_view_ = view; 561 edit_view_ = view;
567 } 562 }
568 return self; 563 return self;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
627 // TODO(shess): Figure out where the selection belongs. On GTK, 622 // TODO(shess): Figure out where the selection belongs. On GTK,
628 // it's set to the start of the text. 623 // it's set to the start of the text.
629 } 624 }
630 625
631 // Signal that we've lost focus when the window resigns key. 626 // Signal that we've lost focus when the window resigns key.
632 - (void)windowDidResignKey:(NSNotification*)notification { 627 - (void)windowDidResignKey:(NSNotification*)notification {
633 edit_view_->OnDidResignKey(); 628 edit_view_->OnDidResignKey();
634 } 629 }
635 630
636 @end 631 @end
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_edit_view_mac.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698