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

Unified Diff: chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.cc

Issue 23533030: rAc: Enforce a 3 second grace period for generated card bubble. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.cc
diff --git a/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.cc b/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.cc
index 8bc4766d10e7df5582ce78225b47c15f22fd3f60..f4a9e8484f960b221eb2bde42492cc8fc157bf6d 100644
--- a/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.cc
+++ b/chrome/browser/ui/views/autofill/generated_credit_card_bubble_views.cc
@@ -34,9 +34,18 @@ views::View* GetAnchor(
GeneratedCreditCardBubbleViews::~GeneratedCreditCardBubbleViews() {}
void GeneratedCreditCardBubbleViews::Show() {
- // TODO(dbeam): investigate why this steals focus from the web contents.
views::BubbleDelegateView::CreateBubble(this)->Show();
+ // Grab mouse events for 3 seconds after showing. This prevents clicks outside
+ // of the bubble from dismissing the bubble. After 3 seconds, it will revert
+ // to normal close-on-deactivate behavior.
+ GetWidget()->SetCapture(NULL);
+ capture_timer_.Start(
+ FROM_HERE,
+ base::TimeDelta::FromSeconds(3),
+ base::Bind(&GeneratedCreditCardBubbleViews::ReleaseCapture,
+ base::Unretained(this)));
+
// This bubble doesn't render correctly on Windows without calling
// |SizeToContents()|. This must be called after showing the widget.
SizeToContents();
@@ -100,9 +109,14 @@ GeneratedCreditCardBubbleViews::GeneratedCreditCardBubbleViews(
const base::WeakPtr<GeneratedCreditCardBubbleController>& controller)
: BubbleDelegateView(GetAnchor(controller), views::BubbleBorder::TOP_RIGHT),
controller_(controller),
+ capture_timer_(false, false),
weak_ptr_factory_(this) {
gfx::Insets insets = views::BubbleFrameView::GetTitleInsets();
set_margins(gfx::Insets(0, insets.left(), insets.top(), insets.left()));
}
+void GeneratedCreditCardBubbleViews::ReleaseCapture() {
+ GetWidget()->ReleaseCapture();
+}
+
} // namespace autofill

Powered by Google App Engine
This is Rietveld 408576698