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

Side by Side Diff: chrome/browser/ui/views/autofill/autofill_dialog_views.cc

Issue 22339012: rAc: Scroll to any input that receives keyboard focus (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 7 years, 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/autofill/autofill_dialog_views.h" 5 #include "chrome/browser/ui/views/autofill/autofill_dialog_views.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 1661 matching lines...) Expand 10 before | Expand all | Expand 10 after
1672 views::View* focused_before, 1672 views::View* focused_before,
1673 views::View* focused_now) { 1673 views::View* focused_now) {
1674 // If user leaves an edit-field, revalidate the group it belongs to. 1674 // If user leaves an edit-field, revalidate the group it belongs to.
1675 if (focused_before) { 1675 if (focused_before) {
1676 DetailsGroup* group = GroupForView(focused_before); 1676 DetailsGroup* group = GroupForView(focused_before);
1677 if (group && group->container->visible()) 1677 if (group && group->container->visible())
1678 ValidateGroup(*group, VALIDATE_EDIT); 1678 ValidateGroup(*group, VALIDATE_EDIT);
1679 } 1679 }
1680 1680
1681 // Show an error bubble when the user focuses the input. 1681 // Show an error bubble when the user focuses the input.
1682 if (focused_now) 1682 if (focused_now) {
1683 focused_now->ScrollRectToVisible(focused_now->GetLocalBounds());
1683 ShowErrorBubbleForViewIfNecessary(focused_now); 1684 ShowErrorBubbleForViewIfNecessary(focused_now);
1685 }
1684 } 1686 }
1685 1687
1686 void AutofillDialogViews::OnSelectedIndexChanged(views::Combobox* combobox) { 1688 void AutofillDialogViews::OnSelectedIndexChanged(views::Combobox* combobox) {
1687 DetailsGroup* group = GroupForView(combobox); 1689 DetailsGroup* group = GroupForView(combobox);
1688 ValidateGroup(*group, VALIDATE_EDIT); 1690 ValidateGroup(*group, VALIDATE_EDIT);
1689 } 1691 }
1690 1692
1691 void AutofillDialogViews::StyledLabelLinkClicked(const ui::Range& range, 1693 void AutofillDialogViews::StyledLabelLinkClicked(const ui::Range& range,
1692 int event_flags) { 1694 int event_flags) {
1693 delegate_->LegalDocumentLinkClicked(range); 1695 delegate_->LegalDocumentLinkClicked(range);
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
2008 validity_map_.erase(input); 2010 validity_map_.erase(input);
2009 error_bubble_.reset(); 2011 error_bubble_.reset();
2010 } 2012 }
2011 } 2013 }
2012 } 2014 }
2013 2015
2014 void AutofillDialogViews::ShowErrorBubbleForViewIfNecessary(views::View* view) { 2016 void AutofillDialogViews::ShowErrorBubbleForViewIfNecessary(views::View* view) {
2015 if (!view->GetWidget()) 2017 if (!view->GetWidget())
2016 return; 2018 return;
2017 2019
2018 if (error_bubble_ && error_bubble_->anchor() == view)
2019 return;
2020
2021 std::map<views::View*, base::string16>::iterator error_message = 2020 std::map<views::View*, base::string16>::iterator error_message =
2022 validity_map_.find(view); 2021 validity_map_.find(view);
2023 if (error_message != validity_map_.end()) { 2022 if (error_message != validity_map_.end()) {
2024 view->ScrollRectToVisible(view->GetLocalBounds()); 2023 view->ScrollRectToVisible(view->GetLocalBounds());
2025 error_bubble_.reset(new ErrorBubble(view, error_message->second)); 2024
2025 if (!error_bubble_ || error_bubble_->anchor() != view)
2026 error_bubble_.reset(new ErrorBubble(view, error_message->second));
2026 } 2027 }
2027 } 2028 }
2028 2029
2029 void AutofillDialogViews::MarkInputsInvalid(DialogSection section, 2030 void AutofillDialogViews::MarkInputsInvalid(DialogSection section,
2030 const ValidityData& validity_data) { 2031 const ValidityData& validity_data) {
2031 DetailsGroup* group = GroupForSection(section); 2032 DetailsGroup* group = GroupForSection(section);
2032 DCHECK(group->container->visible()); 2033 DCHECK(group->container->visible());
2033 2034
2034 typedef std::map<ServerFieldType, 2035 typedef std::map<ServerFieldType,
2035 base::Callback<void(const base::string16&)> > FieldMap; 2036 base::Callback<void(const base::string16&)> > FieldMap;
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
2280 AutofillDialogViews::DetailsGroup::DetailsGroup(DialogSection section) 2281 AutofillDialogViews::DetailsGroup::DetailsGroup(DialogSection section)
2281 : section(section), 2282 : section(section),
2282 container(NULL), 2283 container(NULL),
2283 manual_input(NULL), 2284 manual_input(NULL),
2284 suggested_info(NULL), 2285 suggested_info(NULL),
2285 suggested_button(NULL) {} 2286 suggested_button(NULL) {}
2286 2287
2287 AutofillDialogViews::DetailsGroup::~DetailsGroup() {} 2288 AutofillDialogViews::DetailsGroup::~DetailsGroup() {}
2288 2289
2289 } // namespace autofill 2290 } // namespace autofill
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698