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

Side by Side Diff: chrome/browser/ui/views/location_bar/location_bar_view.cc

Issue 5966006: Hitting Tab should always move cursor to end of omnibox text. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix Mac build. Created 9 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/ui/views/location_bar/location_bar_view.h" 5 #include "chrome/browser/ui/views/location_bar/location_bar_view.h"
6 6
7 #if defined(OS_LINUX) 7 #if defined(OS_LINUX)
8 #include <gtk/gtk.h> 8 #include <gtk/gtk.h>
9 #endif 9 #endif
10 10
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 gfx::Point origin(location_entry_view_->bounds().origin()); 392 gfx::Point origin(location_entry_view_->bounds().origin());
393 // If the UI layout is RTL, the coordinate system is not transformed and 393 // If the UI layout is RTL, the coordinate system is not transformed and
394 // therefore we need to adjust the X coordinate so that bubble appears on the 394 // therefore we need to adjust the X coordinate so that bubble appears on the
395 // right hand side of the location bar. 395 // right hand side of the location bar.
396 if (base::i18n::IsRTL()) 396 if (base::i18n::IsRTL())
397 origin.set_x(width() - origin.x()); 397 origin.set_x(width() - origin.x());
398 views::View::ConvertPointToScreen(this, &origin); 398 views::View::ConvertPointToScreen(this, &origin);
399 return origin; 399 return origin;
400 } 400 }
401 401
402 #if defined(OS_WIN)
403 void LocationBarView::OnCommitSuggestedText() {
404 InstantController* instant = delegate_->GetInstant();
405 DCHECK(instant);
406 DCHECK(suggested_text_view_);
407 OnCommitSuggestedText(location_entry_->GetText());
408 }
409 #endif
410
411 gfx::Size LocationBarView::GetPreferredSize() { 402 gfx::Size LocationBarView::GetPreferredSize() {
412 return gfx::Size(0, GetThemeProvider()->GetBitmapNamed(mode_ == POPUP ? 403 return gfx::Size(0, GetThemeProvider()->GetBitmapNamed(mode_ == POPUP ?
413 IDR_LOCATIONBG_POPUPMODE_CENTER : IDR_LOCATIONBG_C)->height()); 404 IDR_LOCATIONBG_POPUPMODE_CENTER : IDR_LOCATIONBG_C)->height());
414 } 405 }
415 406
416 void LocationBarView::Layout() { 407 void LocationBarView::Layout() {
417 if (!location_entry_.get()) 408 if (!location_entry_.get())
418 return; 409 return;
419 410
420 // TODO(sky): baseline layout. 411 // TODO(sky): baseline layout.
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 752
762 InstantController* instant = delegate_->GetInstant(); 753 InstantController* instant = delegate_->GetInstant();
763 if (instant) 754 if (instant)
764 instant->OnAutocompleteLostFocus(view_gaining_focus); 755 instant->OnAutocompleteLostFocus(view_gaining_focus);
765 } 756 }
766 757
767 void LocationBarView::OnAutocompleteWillAccept() { 758 void LocationBarView::OnAutocompleteWillAccept() {
768 update_instant_ = false; 759 update_instant_ = false;
769 } 760 }
770 761
771 bool LocationBarView::OnCommitSuggestedText(const string16& typed_text) { 762 bool LocationBarView::OnCommitSuggestedText(bool skip_inline_autocomplete) {
772 InstantController* instant = delegate_->GetInstant(); 763 if (!delegate_->GetInstant())
773 if (!instant)
774 return false; 764 return false;
765
775 string16 suggestion; 766 string16 suggestion;
776 #if defined(OS_WIN) 767 #if defined(OS_WIN)
777 if (!HasValidSuggestText()) 768 if (HasValidSuggestText())
769 suggestion = suggested_text_view_->GetText();
770 #else
771 suggestion = location_entry_->GetInstantSuggestion();
772 #endif
773
774 if (suggestion.empty())
778 return false; 775 return false;
779 suggestion = suggested_text_view_->GetText(); 776
780 #endif 777 location_entry_->model()->FinalizeInstantQuery(
781 return location_entry_->CommitInstantSuggestion(typed_text, suggestion); 778 location_entry_->GetText(), suggestion, skip_inline_autocomplete);
779 return true;
782 } 780 }
783 781
784 bool LocationBarView::AcceptCurrentInstantPreview() { 782 bool LocationBarView::AcceptCurrentInstantPreview() {
785 return InstantController::CommitIfCurrent(delegate_->GetInstant()); 783 return InstantController::CommitIfCurrent(delegate_->GetInstant());
786 } 784 }
787 785
788 void LocationBarView::OnPopupBoundsChanged(const gfx::Rect& bounds) { 786 void LocationBarView::OnPopupBoundsChanged(const gfx::Rect& bounds) {
789 InstantController* instant = delegate_->GetInstant(); 787 InstantController* instant = delegate_->GetInstant();
790 if (instant) 788 if (instant)
791 instant->SetOmniboxBounds(bounds); 789 instant->SetOmniboxBounds(bounds);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 string16 suggested_text; 843 string16 suggested_text;
846 if (update_instant_ && instant && GetTabContentsWrapper()) { 844 if (update_instant_ && instant && GetTabContentsWrapper()) {
847 if (location_entry_->model()->user_input_in_progress() && 845 if (location_entry_->model()->user_input_in_progress() &&
848 location_entry_->model()->popup_model()->IsOpen()) { 846 location_entry_->model()->popup_model()->IsOpen()) {
849 instant->Update(GetTabContentsWrapper(), 847 instant->Update(GetTabContentsWrapper(),
850 location_entry_->model()->CurrentMatch(), 848 location_entry_->model()->CurrentMatch(),
851 location_entry_->GetText(), 849 location_entry_->GetText(),
852 location_entry_->model()->UseVerbatimInstant(), 850 location_entry_->model()->UseVerbatimInstant(),
853 &suggested_text); 851 &suggested_text);
854 if (!instant->MightSupportInstant()) { 852 if (!instant->MightSupportInstant()) {
855 location_entry_->model()->FinalizeInstantQuery(string16(), 853 location_entry_->model()->FinalizeInstantQuery(
856 string16()); 854 string16(), string16(), false);
857 } 855 }
858 } else { 856 } else {
859 instant->DestroyPreviewContents(); 857 instant->DestroyPreviewContents();
860 location_entry_->model()->FinalizeInstantQuery(string16(), 858 location_entry_->model()->FinalizeInstantQuery(
861 string16()); 859 string16(), string16(), false);
862 } 860 }
863 } 861 }
864 862
865 SetSuggestedText(suggested_text); 863 SetSuggestedText(suggested_text);
866 } 864 }
867 865
868 void LocationBarView::OnSelectionBoundsChanged() { 866 void LocationBarView::OnSelectionBoundsChanged() {
869 #if defined(OS_WIN) 867 #if defined(OS_WIN)
870 if (suggested_text_view_) 868 if (suggested_text_view_)
871 suggested_text_view_->StopAnimation(); 869 suggested_text_view_->StopAnimation();
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
1051 if (views::FocusManager::IsTabTraversalKeyEvent(e)) { 1049 if (views::FocusManager::IsTabTraversalKeyEvent(e)) {
1052 if (HasValidSuggestText()) { 1050 if (HasValidSuggestText()) {
1053 // Return true so that the edit sees the tab and commits the suggestion. 1051 // Return true so that the edit sees the tab and commits the suggestion.
1054 return true; 1052 return true;
1055 } 1053 }
1056 if (keyword_hint_view_->IsVisible() && !e.IsShiftDown()) { 1054 if (keyword_hint_view_->IsVisible() && !e.IsShiftDown()) {
1057 // Return true so the edit gets the tab event and enters keyword mode. 1055 // Return true so the edit gets the tab event and enters keyword mode.
1058 return true; 1056 return true;
1059 } 1057 }
1060 1058
1059 // If the caret is not at the end, then tab moves the caret to the end.
1060 if (!location_entry_->IsCaretAtEnd())
1061 return true;
1062
1061 // Tab while showing instant commits instant immediately. 1063 // Tab while showing instant commits instant immediately.
1062 // Return true so that focus traversal isn't attempted. The edit ends 1064 // Return true so that focus traversal isn't attempted. The edit ends
1063 // up doing nothing in this case. 1065 // up doing nothing in this case.
1064 if (AcceptCurrentInstantPreview()) 1066 if (AcceptCurrentInstantPreview())
1065 return true; 1067 return true;
1066 } 1068 }
1067 1069
1068 return location_entry_->SkipDefaultKeyEventProcessing(e); 1070 return location_entry_->SkipDefaultKeyEventProcessing(e);
1069 #else 1071 #else
1070 // This method is not used for Linux ports. See FocusManager::OnKeyEvent() in 1072 // This method is not used for Linux ports. See FocusManager::OnKeyEvent() in
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1121 } 1123 }
1122 1124
1123 void LocationBarView::SetSuggestedText(const string16& input) { 1125 void LocationBarView::SetSuggestedText(const string16& input) {
1124 if (CommandLine::ForCurrentProcess()->HasSwitch( 1126 if (CommandLine::ForCurrentProcess()->HasSwitch(
1125 switches::kInstantAutocompleteImmediately)) { 1127 switches::kInstantAutocompleteImmediately)) {
1126 // This method is internally invoked to reset suggest text, so we only do 1128 // This method is internally invoked to reset suggest text, so we only do
1127 // anything if the text isn't empty. 1129 // anything if the text isn't empty.
1128 // TODO: if we keep autocomplete, make it so this isn't invoked with empty 1130 // TODO: if we keep autocomplete, make it so this isn't invoked with empty
1129 // text. 1131 // text.
1130 if (!input.empty()) { 1132 if (!input.empty()) {
1131 location_entry_->model()->FinalizeInstantQuery(location_entry_->GetText(), 1133 location_entry_->model()->FinalizeInstantQuery(
1132 input); 1134 location_entry_->GetText(), input, false);
1133 } 1135 }
1134 return; 1136 return;
1135 } 1137 }
1136 #if defined(OS_WIN) 1138 #if defined(OS_WIN)
1137 // Don't show the suggested text if inline autocomplete is prevented. 1139 // Don't show the suggested text if inline autocomplete is prevented.
1138 string16 text = location_entry_->model()->UseVerbatimInstant() ? 1140 string16 text = location_entry_->model()->UseVerbatimInstant() ?
1139 string16() : input; 1141 string16() : input;
1140 if (!text.empty()) { 1142 if (!text.empty()) {
1141 if (!suggested_text_view_) { 1143 if (!suggested_text_view_) {
1142 suggested_text_view_ = new SuggestedTextView(this); 1144 suggested_text_view_ = new SuggestedTextView(this);
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
1255 template_url_model_ = NULL; 1257 template_url_model_ = NULL;
1256 ShowFirstRunBubble(bubble_type_); 1258 ShowFirstRunBubble(bubble_type_);
1257 } 1259 }
1258 1260
1259 #if defined(OS_WIN) 1261 #if defined(OS_WIN)
1260 bool LocationBarView::HasValidSuggestText() { 1262 bool LocationBarView::HasValidSuggestText() {
1261 return suggested_text_view_ && !suggested_text_view_->size().IsEmpty() && 1263 return suggested_text_view_ && !suggested_text_view_->size().IsEmpty() &&
1262 !suggested_text_view_->GetText().empty(); 1264 !suggested_text_view_->GetText().empty();
1263 } 1265 }
1264 #endif 1266 #endif
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/location_bar/location_bar_view.h ('k') | chrome/browser/ui/views/location_bar/suggested_text_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698