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

Side by Side Diff: chrome/browser/autocomplete/autocomplete_edit_view_win.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, 10 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/autocomplete/autocomplete_edit_view_win.h" 5 #include "chrome/browser/autocomplete/autocomplete_edit_view_win.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <locale> 8 #include <locale>
9 #include <string> 9 #include <string>
10 10
(...skipping 906 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 917
918 CommandUpdater* AutocompleteEditViewWin::GetCommandUpdater() { 918 CommandUpdater* AutocompleteEditViewWin::GetCommandUpdater() {
919 return command_updater_; 919 return command_updater_;
920 } 920 }
921 921
922 void AutocompleteEditViewWin::SetInstantSuggestion(const string16& suggestion) { 922 void AutocompleteEditViewWin::SetInstantSuggestion(const string16& suggestion) {
923 // On Windows, we shows the suggestion in LocationBarView. 923 // On Windows, we shows the suggestion in LocationBarView.
924 NOTREACHED(); 924 NOTREACHED();
925 } 925 }
926 926
927 string16 AutocompleteEditViewWin::GetInstantSuggestion() const {
928 // On Windows, we shows the suggestion in LocationBarView.
929 NOTREACHED();
930 return string16();
931 }
932
927 int AutocompleteEditViewWin::TextWidth() const { 933 int AutocompleteEditViewWin::TextWidth() const {
928 return WidthNeededToDisplay(GetText()); 934 return WidthNeededToDisplay(GetText());
929 } 935 }
930 936
931 bool AutocompleteEditViewWin::IsImeComposing() const { 937 bool AutocompleteEditViewWin::IsImeComposing() const {
932 bool ime_composing = false; 938 bool ime_composing = false;
933 HIMC context = ImmGetContext(m_hWnd); 939 HIMC context = ImmGetContext(m_hWnd);
934 if (context) { 940 if (context) {
935 ime_composing = !!ImmGetCompositionString(context, GCS_COMPSTR, NULL, 0); 941 ime_composing = !!ImmGetCompositionString(context, GCS_COMPSTR, NULL, 0);
936 ImmReleaseContext(m_hWnd, context); 942 ImmReleaseContext(m_hWnd, context);
937 } 943 }
938 return ime_composing; 944 return ime_composing;
939 } 945 }
940 946
941 views::View* AutocompleteEditViewWin::AddToView(views::View* parent) { 947 views::View* AutocompleteEditViewWin::AddToView(views::View* parent) {
942 views::NativeViewHost* host = new views::NativeViewHost; 948 views::NativeViewHost* host = new views::NativeViewHost;
943 parent->AddChildView(host); 949 parent->AddChildView(host);
944 host->set_focus_view(parent); 950 host->set_focus_view(parent);
945 host->Attach(GetNativeView()); 951 host->Attach(GetNativeView());
946 return host; 952 return host;
947 } 953 }
948 954
949 bool AutocompleteEditViewWin::CommitInstantSuggestion(
950 const string16& typed_text,
951 const string16& suggested_text) {
952 model_->FinalizeInstantQuery(typed_text, suggested_text);
953 return true;
954 }
955
956 void AutocompleteEditViewWin::PasteAndGo(const string16& text) { 955 void AutocompleteEditViewWin::PasteAndGo(const string16& text) {
957 if (CanPasteAndGo(text)) 956 if (CanPasteAndGo(text))
958 model_->PasteAndGo(); 957 model_->PasteAndGo();
959 } 958 }
960 959
961 bool AutocompleteEditViewWin::SkipDefaultKeyEventProcessing( 960 bool AutocompleteEditViewWin::SkipDefaultKeyEventProcessing(
962 const views::KeyEvent& e) { 961 const views::KeyEvent& e) {
963 ui::KeyboardCode key = e.GetKeyCode(); 962 ui::KeyboardCode key = e.GetKeyCode();
964 // We don't process ALT + numpad digit as accelerators, they are used for 963 // We don't process ALT + numpad digit as accelerators, they are used for
965 // entering special characters. We do translate alt-home. 964 // entering special characters. We do translate alt-home.
(...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after
1841 switch (key) { 1840 switch (key) {
1842 case VK_RIGHT: 1841 case VK_RIGHT:
1843 // TODO(sky): figure out RTL. 1842 // TODO(sky): figure out RTL.
1844 if (base::i18n::IsRTL()) 1843 if (base::i18n::IsRTL())
1845 return false; 1844 return false;
1846 { 1845 {
1847 CHARRANGE selection; 1846 CHARRANGE selection;
1848 GetSel(selection); 1847 GetSel(selection);
1849 return (selection.cpMin == selection.cpMax) && 1848 return (selection.cpMin == selection.cpMax) &&
1850 (selection.cpMin == GetTextLength()) && 1849 (selection.cpMin == GetTextLength()) &&
1851 controller_->OnCommitSuggestedText(GetText()); 1850 controller_->OnCommitSuggestedText(true);
1852 } 1851 }
1853 1852
1854 case VK_RETURN: 1853 case VK_RETURN:
1855 model_->AcceptInput((flags & KF_ALTDOWN) ? 1854 model_->AcceptInput((flags & KF_ALTDOWN) ?
1856 NEW_FOREGROUND_TAB : CURRENT_TAB, false); 1855 NEW_FOREGROUND_TAB : CURRENT_TAB, false);
1857 return true; 1856 return true;
1858 1857
1859 case VK_PRIOR: 1858 case VK_PRIOR:
1860 case VK_NEXT: 1859 case VK_NEXT:
1861 count = model_->result().size(); 1860 count = model_->result().size();
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1970 ScopedFreeze freeze(this, GetTextObjectModel()); 1969 ScopedFreeze freeze(this, GetTextObjectModel());
1971 model_->ClearKeyword(GetText()); 1970 model_->ClearKeyword(GetText());
1972 return true; 1971 return true;
1973 } 1972 }
1974 1973
1975 case VK_TAB: { 1974 case VK_TAB: {
1976 if (model_->is_keyword_hint()) { 1975 if (model_->is_keyword_hint()) {
1977 // Accept the keyword. 1976 // Accept the keyword.
1978 ScopedFreeze freeze(this, GetTextObjectModel()); 1977 ScopedFreeze freeze(this, GetTextObjectModel());
1979 model_->AcceptKeyword(); 1978 model_->AcceptKeyword();
1979 } else if (!IsCaretAtEnd()) {
1980 ScopedFreeze freeze(this, GetTextObjectModel());
1981 OnBeforePossibleChange();
1982 PlaceCaretAt(GetTextLength());
1983 OnAfterPossibleChange();
1980 } else { 1984 } else {
1981 controller_->OnCommitSuggestedText(GetText()); 1985 controller_->OnCommitSuggestedText(true);
1982 } 1986 }
1983 return true; 1987 return true;
1984 } 1988 }
1985 1989
1986 case 0xbb: // Ctrl-'='. Triggers subscripting (even in plain text mode). 1990 case 0xbb: // Ctrl-'='. Triggers subscripting (even in plain text mode).
1987 // We don't use VK_OEM_PLUS in case the macro isn't defined. 1991 // We don't use VK_OEM_PLUS in case the macro isn't defined.
1988 // (e.g., we don't have this symbol in embeded environment). 1992 // (e.g., we don't have this symbol in embeded environment).
1989 return true; 1993 return true;
1990 1994
1991 default: 1995 default:
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
2561 } 2565 }
2562 2566
2563 int AutocompleteEditViewWin::WidthNeededToDisplay( 2567 int AutocompleteEditViewWin::WidthNeededToDisplay(
2564 const string16& text) const { 2568 const string16& text) const {
2565 // Use font_.GetStringWidth() instead of 2569 // Use font_.GetStringWidth() instead of
2566 // PosFromChar(location_entry_->GetTextLength()) because PosFromChar() is 2570 // PosFromChar(location_entry_->GetTextLength()) because PosFromChar() is
2567 // apparently buggy. In both LTR UI and RTL UI with left-to-right layout, 2571 // apparently buggy. In both LTR UI and RTL UI with left-to-right layout,
2568 // PosFromChar(i) might return 0 when i is greater than 1. 2572 // PosFromChar(i) might return 0 when i is greater than 1.
2569 return font_.GetStringWidth(text) + GetHorizontalMargin(); 2573 return font_.GetStringWidth(text) + GetHorizontalMargin();
2570 } 2574 }
2575
2576 bool AutocompleteEditViewWin::IsCaretAtEnd() const {
2577 long length = GetTextLength();
2578 CHARRANGE sel;
2579 GetSelection(sel);
2580 return sel.cpMin == sel.cpMax && sel.cpMin == length;
2581 }
OLDNEW
« no previous file with comments | « chrome/browser/autocomplete/autocomplete_edit_view_win.h ('k') | chrome/browser/browser_focus_uitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698