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..466c5174c69b4903e7269dc89aefbc1aa82224e3 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,19 @@ 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); |
+ GetWidget()->set_auto_release_capture(false); |
+ capture_timer_.Start( |
+ FROM_HERE, |
+ base::TimeDelta::FromSeconds(3), |
+ this, |
+ &GeneratedCreditCardBubbleViews::ReleaseCapture); |
+ |
// This bubble doesn't render correctly on Windows without calling |
// |SizeToContents()|. This must be called after showing the widget. |
SizeToContents(); |
@@ -105,4 +115,8 @@ GeneratedCreditCardBubbleViews::GeneratedCreditCardBubbleViews( |
set_margins(gfx::Insets(0, insets.left(), insets.top(), insets.left())); |
} |
+void GeneratedCreditCardBubbleViews::ReleaseCapture() { |
+ GetWidget()->ReleaseCapture(); |
+} |
+ |
} // namespace autofill |