diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-29 18:40:10 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-29 18:40:10 +0000 |
commit | a27feb209dc10f39ee4e0a90ac622623fefb5960 (patch) | |
tree | 9053aa2cc7cba13a1fbf3b867733de318c875bfc /athena | |
parent | 1cb64aa48bd3f4da547c7a7d1afbff4b521f6860 (diff) | |
download | chromium_src-a27feb209dc10f39ee4e0a90ac622623fefb5960.zip chromium_src-a27feb209dc10f39ee4e0a90ac622623fefb5960.tar.gz chromium_src-a27feb209dc10f39ee4e0a90ac622623fefb5960.tar.bz2 |
athena: Fix a couple of UX issues with entering password for networks.
. Make sure a network-row that has a password entry remains visible when
the network list is refreshed.
. Make sure the password text-entry gets the focus when it is added to the list,
to make sure that the virtual keyboard is visible.
BUG=398393, 398395
R=oshima@chromium.org
Review URL: https://codereview.chromium.org/419683012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286268 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'athena')
-rw-r--r-- | athena/main/debug/network_selector.cc | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/athena/main/debug/network_selector.cc b/athena/main/debug/network_selector.cc index f47f683..39ef9a8 100644 --- a/athena/main/debug/network_selector.cc +++ b/athena/main/debug/network_selector.cc @@ -122,6 +122,7 @@ class PasswordView : public views::View, public views::ButtonListener { AddChildView(error_msg_); InvalidateLayout(); parent_container_->Layout(); + ScrollRectToVisible(error_msg_->bounds()); } connect_->SetEnabled(true); } @@ -149,6 +150,13 @@ class PasswordView : public views::View, public views::ButtonListener { void OnConnectionSucceed() { Close(true); } + // views::View: + virtual void ViewHierarchyChanged( + const views::View::ViewHierarchyChangedDetails& details) OVERRIDE { + if (details.is_add && details.child == this) + textfield_->RequestFocus(); + } + // views::ButtonListener: virtual void ButtonPressed(views::Button* sender, const ui::Event& event) OVERRIDE { @@ -167,9 +175,7 @@ class PasswordView : public views::View, public views::ButtonListener { textfield_->text()), base::Bind(&PasswordView::OnKnownError, weak_ptr_.GetWeakPtr())); } else if (sender == cancel_) { - views::View* parent_view = parent(); Close(false); - parent_view->Layout(); } else { NOTREACHED(); } @@ -217,11 +223,14 @@ class NetworkRow : public views::View { AddChildView(password_view_.get()); } + bool has_password_view() const { return password_view_; } + private: void OnPasswordComplete(bool successful) { password_view_.reset(); InvalidateLayout(); container_->Layout(); + ScrollRectToVisible(GetContentsBounds()); } void ShowPasswordView(const std::string& service_path) { @@ -245,6 +254,7 @@ class NetworkRow : public views::View { AddChildView(password_view_.get()); PreferredSizeChanged(); container_->Layout(); + ScrollRectToVisible(password_view_->bounds()); } void OnNetworkConnectionError(const std::string& service_path, @@ -383,7 +393,9 @@ class NetworkSelector : public ui::NetworkListDelegate, return new NetworkRow(info, background_view_); } - virtual bool IsViewHovered(views::View* view) OVERRIDE { return false; } + virtual bool IsViewHovered(views::View* view) OVERRIDE { + return static_cast<NetworkRow*>(view)->has_password_view(); + } virtual chromeos::NetworkTypePattern GetNetworkTypePattern() const OVERRIDE { return chromeos::NetworkTypePattern::NonVirtual(); |