diff options
author | avayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-17 08:47:06 +0000 |
---|---|---|
committer | avayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-17 08:47:06 +0000 |
commit | c8b48abe0fe6a31c27056d3e955ee6eb92a84417 (patch) | |
tree | 60e9ea79d928607d5041ea08e189a91859842b19 /chrome/browser/chromeos | |
parent | 60b0768217facf4d3ed3e2417f0f88bb2fdcdc9d (diff) | |
download | chromium_src-c8b48abe0fe6a31c27056d3e955ee6eb92a84417.zip chromium_src-c8b48abe0fe6a31c27056d3e955ee6eb92a84417.tar.gz chromium_src-c8b48abe0fe6a31c27056d3e955ee6eb92a84417.tar.bz2 |
Proper autocompletion of username when textfield looses focus.
Tab key doesn't get here since it's handled by focus manager.
BUG=none
TEST=Enter a name without domain in username field on login screen. Remove
focus from the field (i.e. by hitting Tab). @gmail.com should be appended.
Review URL: http://codereview.chromium.org/2829005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50083 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos')
-rw-r--r-- | chrome/browser/chromeos/login/new_user_view.cc | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/chrome/browser/chromeos/login/new_user_view.cc b/chrome/browser/chromeos/login/new_user_view.cc index eac52f9..506c527 100644 --- a/chrome/browser/chromeos/login/new_user_view.cc +++ b/chrome/browser/chromeos/login/new_user_view.cc @@ -48,6 +48,27 @@ const char kDefaultDomain[] = "@gmail.com"; const char kAccountRecoveryHelpUrl[] = "http://www.google.com/support/accounts/bin/answer.py?answer=48598"; +// Textfield that adds domain to the entered username if focus is lost and +// username doesn't have full domain. +class UsernameField : public views::Textfield { + public: + UsernameField() {} + + // views::Textfield overrides: + virtual void WillLoseFocus() { + if (!text().empty()) { + std::string username = UTF16ToUTF8(text()); + + if (username.find('@') == std::string::npos) { + username += kDefaultDomain; + SetText(UTF8ToUTF16(username)); + } + } + } + + DISALLOW_COPY_AND_ASSIGN(UsernameField); +}; + } // namespace namespace chromeos { @@ -96,7 +117,7 @@ void NewUserView::Init() { title_label_->SetMultiLine(true); AddChildView(title_label_); - username_field_ = new views::Textfield; + username_field_ = new UsernameField(); AddChildView(username_field_); password_field_ = new views::Textfield(views::Textfield::STYLE_PASSWORD); @@ -367,17 +388,7 @@ bool NewUserView::HandleKeystroke(views::Textfield* s, if (!CrosLibrary::Get()->EnsureLoaded() || login_in_process_) return false; - if (keystroke.GetKeyboardCode() == base::VKEY_TAB) { - if (username_field_->text().length() != 0) { - std::string username = UTF16ToUTF8(username_field_->text()); - - if (username.find('@') == std::string::npos) { - username += kDefaultDomain; - username_field_->SetText(UTF8ToUTF16(username)); - } - return false; - } - } else if (keystroke.GetKeyboardCode() == base::VKEY_RETURN) { + if (keystroke.GetKeyboardCode() == base::VKEY_RETURN) { Login(); // Return true so that processing ends return true; |