OLD | NEW |
---|---|
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/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "chrome/browser/ui/autofill/popup_constants.h" | 10 #include "chrome/browser/ui/autofill/popup_constants.h" |
11 #include "ui/views/border.h" | 11 #include "ui/views/border.h" |
12 #include "ui/views/focus/focus_manager.h" | 12 #include "ui/views/focus/focus_manager.h" |
13 #include "ui/views/widget/widget.h" | 13 #include "ui/views/widget/widget.h" |
14 | 14 |
15 #if defined(OS_WIN) | |
16 #include <mmsystem.h> | |
Evan Stade
2015/03/20 19:27:52
ewww
can you use TimeTicks or something?
please use gerrit instead
2015/03/20 20:55:53
event.time_stamp() is comparable to GetTickCount()
spang
2015/03/22 17:14:03
Please don't put this kind of workaround here with
| |
17 #endif | |
18 | |
15 namespace autofill { | 19 namespace autofill { |
16 | 20 |
17 const SkColor AutofillPopupBaseView::kBorderColor = | 21 const SkColor AutofillPopupBaseView::kBorderColor = |
18 SkColorSetARGB(0xFF, 0xC7, 0xCA, 0xCE); | 22 SkColorSetARGB(0xFF, 0xC7, 0xCA, 0xCE); |
19 const SkColor AutofillPopupBaseView::kHoveredBackgroundColor = | 23 const SkColor AutofillPopupBaseView::kHoveredBackgroundColor = |
20 SkColorSetARGB(0xFF, 0xCD, 0xCD, 0xCD); | 24 SkColorSetARGB(0xFF, 0xCD, 0xCD, 0xCD); |
21 const SkColor AutofillPopupBaseView::kItemTextColor = | 25 const SkColor AutofillPopupBaseView::kItemTextColor = |
22 SkColorSetARGB(0xFF, 0x7F, 0x7F, 0x7F); | 26 SkColorSetARGB(0xFF, 0x7F, 0x7F, 0x7F); |
23 const SkColor AutofillPopupBaseView::kPopupBackground = | 27 const SkColor AutofillPopupBaseView::kPopupBackground = |
24 SkColorSetARGB(0xFF, 0xFF, 0xFF, 0xFF); | 28 SkColorSetARGB(0xFF, 0xFF, 0xFF, 0xFF); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
59 // deletion. | 63 // deletion. |
60 views::Widget* widget = new views::Widget; | 64 views::Widget* widget = new views::Widget; |
61 views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP); | 65 views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP); |
62 params.delegate = this; | 66 params.delegate = this; |
63 params.parent = container_view(); | 67 params.parent = container_view(); |
64 widget->Init(params); | 68 widget->Init(params); |
65 widget->SetContentsView(this); | 69 widget->SetContentsView(this); |
66 | 70 |
67 // No animation for popup appearance (too distracting). | 71 // No animation for popup appearance (too distracting). |
68 widget->SetVisibilityAnimationTransition(views::Widget::ANIMATE_HIDE); | 72 widget->SetVisibilityAnimationTransition(views::Widget::ANIMATE_HIDE); |
73 | |
74 #if defined(OS_WIN) | |
75 show_time_ = base::TimeDelta::FromMilliseconds(timeGetTime()); | |
76 #endif | |
69 } | 77 } |
70 | 78 |
71 SetBorder(views::Border::CreateSolidBorder(kPopupBorderThickness, | 79 SetBorder(views::Border::CreateSolidBorder(kPopupBorderThickness, |
72 kBorderColor)); | 80 kBorderColor)); |
73 | 81 |
74 DoUpdateBoundsAndRedrawPopup(); | 82 DoUpdateBoundsAndRedrawPopup(); |
75 GetWidget()->Show(); | 83 GetWidget()->Show(); |
76 | 84 |
77 // Showing the widget can change native focus (which would result in an | 85 // Showing the widget can change native focus (which would result in an |
78 // immediate hiding of the popup). Only start observing after shown. | 86 // immediate hiding of the popup). Only start observing after shown. |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
136 // via AcceleratorPressed, so we need to let that run first. | 144 // via AcceleratorPressed, so we need to let that run first. |
137 base::MessageLoop::current()->PostTask( | 145 base::MessageLoop::current()->PostTask( |
138 FROM_HERE, | 146 FROM_HERE, |
139 base::Bind(&AutofillPopupBaseView::ClearSelection, | 147 base::Bind(&AutofillPopupBaseView::ClearSelection, |
140 weak_ptr_factory_.GetWeakPtr())); | 148 weak_ptr_factory_.GetWeakPtr())); |
141 } | 149 } |
142 | 150 |
143 void AutofillPopupBaseView::OnMouseMoved(const ui::MouseEvent& event) { | 151 void AutofillPopupBaseView::OnMouseMoved(const ui::MouseEvent& event) { |
144 // A synthesized mouse move will be sent when the popup is first shown. | 152 // A synthesized mouse move will be sent when the popup is first shown. |
145 // Don't preview a suggestion if the mouse happens to be hovering there. | 153 // Don't preview a suggestion if the mouse happens to be hovering there. |
154 #if defined(OS_WIN) | |
155 if (event.time_stamp() - show_time_ <= base::TimeDelta::FromMilliseconds(50)) | |
156 return; | |
157 #else | |
146 if (event.flags() & ui::EF_IS_SYNTHESIZED) | 158 if (event.flags() & ui::EF_IS_SYNTHESIZED) |
147 return; | 159 return; |
160 #endif | |
148 | 161 |
149 if (HitTestPoint(event.location())) | 162 if (HitTestPoint(event.location())) |
150 SetSelection(event.location()); | 163 SetSelection(event.location()); |
151 else | 164 else |
152 ClearSelection(); | 165 ClearSelection(); |
153 } | 166 } |
154 | 167 |
155 bool AutofillPopupBaseView::OnMousePressed(const ui::MouseEvent& event) { | 168 bool AutofillPopupBaseView::OnMousePressed(const ui::MouseEvent& event) { |
156 return event.GetClickCount() == 1; | 169 return event.GetClickCount() == 1; |
157 } | 170 } |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
226 void AutofillPopupBaseView::HideController() { | 239 void AutofillPopupBaseView::HideController() { |
227 if (delegate_) | 240 if (delegate_) |
228 delegate_->Hide(); | 241 delegate_->Hide(); |
229 } | 242 } |
230 | 243 |
231 gfx::NativeView AutofillPopupBaseView::container_view() { | 244 gfx::NativeView AutofillPopupBaseView::container_view() { |
232 return delegate_->container_view(); | 245 return delegate_->container_view(); |
233 } | 246 } |
234 | 247 |
235 } // namespace autofill | 248 } // namespace autofill |
OLD | NEW |