summaryrefslogtreecommitdiffstats
path: root/athena
diff options
context:
space:
mode:
authorsadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-29 18:40:10 +0000
committersadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-29 18:40:10 +0000
commita27feb209dc10f39ee4e0a90ac622623fefb5960 (patch)
tree9053aa2cc7cba13a1fbf3b867733de318c875bfc /athena
parent1cb64aa48bd3f4da547c7a7d1afbff4b521f6860 (diff)
downloadchromium_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.cc18
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();