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

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

Issue 2694183005: Ensure autofill popup border is visible (Closed)
Patch Set: fixes Created 3 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_popup_base_view.h" 5 #include "chrome/browser/ui/views/autofill/autofill_popup_base_view.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "base/threading/thread_task_runner_handle.h" 10 #include "base/threading/thread_task_runner_handle.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 params.delegate = this; 54 params.delegate = this;
55 params.parent = parent_widget_->GetNativeView(); 55 params.parent = parent_widget_->GetNativeView();
56 widget->Init(params); 56 widget->Init(params);
57 57
58 // No animation for popup appearance (too distracting). 58 // No animation for popup appearance (too distracting).
59 widget->SetVisibilityAnimationTransition(views::Widget::ANIMATE_HIDE); 59 widget->SetVisibilityAnimationTransition(views::Widget::ANIMATE_HIDE);
60 60
61 show_time_ = base::Time::Now(); 61 show_time_ = base::Time::Now();
62 } 62 }
63 63
64 // TODO(crbug.com/676164): Show different border color when focused/unfocused
65 SetBorder(views::CreateSolidBorder(
66 kPopupBorderThickness,
67 GetNativeTheme()->GetSystemColor(
68 ui::NativeTheme::kColorId_UnfocusedBorderColor)));
69
70 DoUpdateBoundsAndRedrawPopup(); 64 DoUpdateBoundsAndRedrawPopup();
71 GetWidget()->Show(); 65 GetWidget()->Show();
72 66
73 // Showing the widget can change native focus (which would result in an 67 // Showing the widget can change native focus (which would result in an
74 // immediate hiding of the popup). Only start observing after shown. 68 // immediate hiding of the popup). Only start observing after shown.
75 if (initialize_widget) 69 if (initialize_widget)
76 views::WidgetFocusManager::GetInstance()->AddFocusChangeListener(this); 70 views::WidgetFocusManager::GetInstance()->AddFocusChangeListener(this);
77 } 71 }
78 72
79 void AutofillPopupBaseView::DoHide() { 73 void AutofillPopupBaseView::DoHide() {
(...skipping 20 matching lines...) Expand all
100 } 94 }
101 95
102 void AutofillPopupBaseView::RemoveObserver() { 96 void AutofillPopupBaseView::RemoveObserver() {
103 parent_widget_->GetFocusManager()->UnregisterAccelerators(this); 97 parent_widget_->GetFocusManager()->UnregisterAccelerators(this);
104 parent_widget_->RemoveObserver(this); 98 parent_widget_->RemoveObserver(this);
105 views::WidgetFocusManager::GetInstance()->RemoveFocusChangeListener(this); 99 views::WidgetFocusManager::GetInstance()->RemoveFocusChangeListener(this);
106 } 100 }
107 101
108 void AutofillPopupBaseView::DoUpdateBoundsAndRedrawPopup() { 102 void AutofillPopupBaseView::DoUpdateBoundsAndRedrawPopup() {
109 GetWidget()->SetBounds(delegate_->popup_bounds()); 103 GetWidget()->SetBounds(delegate_->popup_bounds());
104
105 // We update the border whenever bounds are updated. Due to rounding when
106 // calculating the actual view size (bounds()) from the requested view size
107 // (delegate_.popup_bounds()), we may end up with extra space at the bottom
108 // and right of the view. We fill this with extra border pixels.
Peter Kasting 2017/02/16 00:30:26 Rob, can you comment here? It seems like the issu
109 int extra_border_thickness_x =
110 bounds().width() - delegate_->popup_bounds().width();
111 int extra_border_thickness_y =
112 bounds().height() - delegate_->popup_bounds().height();
113
114 // TODO(crbug.com/676164): Show different border color when focused/unfocused
115 SetBorder(views::CreateSolidSidedBorder(
116 kPopupBorderThickness, kPopupBorderThickness,
117 kPopupBorderThickness + extra_border_thickness_y,
118 kPopupBorderThickness + extra_border_thickness_x,
119 GetNativeTheme()->GetSystemColor(
120 ui::NativeTheme::kColorId_UnfocusedBorderColor)));
121
110 SchedulePaint(); 122 SchedulePaint();
111 } 123 }
112 124
125 gfx::Rect AutofillPopupBaseView::GetPopupBounds() const {
126 return delegate_->popup_bounds();
127 }
128
113 void AutofillPopupBaseView::OnNativeFocusChanged(gfx::NativeView focused_now) { 129 void AutofillPopupBaseView::OnNativeFocusChanged(gfx::NativeView focused_now) {
114 if (GetWidget() && GetWidget()->GetNativeView() != focused_now) 130 if (GetWidget() && GetWidget()->GetNativeView() != focused_now)
115 HideController(); 131 HideController();
116 } 132 }
117 133
118 void AutofillPopupBaseView::OnMouseCaptureLost() { 134 void AutofillPopupBaseView::OnMouseCaptureLost() {
119 ClearSelection(); 135 ClearSelection();
120 } 136 }
121 137
122 bool AutofillPopupBaseView::OnMouseDragged(const ui::MouseEvent& event) { 138 bool AutofillPopupBaseView::OnMouseDragged(const ui::MouseEvent& event) {
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 void AutofillPopupBaseView::HideController() { 251 void AutofillPopupBaseView::HideController() {
236 if (delegate_) 252 if (delegate_)
237 delegate_->Hide(); 253 delegate_->Hide();
238 } 254 }
239 255
240 gfx::NativeView AutofillPopupBaseView::container_view() { 256 gfx::NativeView AutofillPopupBaseView::container_view() {
241 return delegate_->container_view(); 257 return delegate_->container_view();
242 } 258 }
243 259
244 } // namespace autofill 260 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698