| Index: chrome/browser/ui/views/bubble/bubble.cc
|
| diff --git a/chrome/browser/ui/views/bubble/bubble.cc b/chrome/browser/ui/views/bubble/bubble.cc
|
| index 477e96b6bd36cd0a44468f9654e0d5d13d49ba5f..6886d724d954cc373e8af8c65acfa24a154fd0b2 100644
|
| --- a/chrome/browser/ui/views/bubble/bubble.cc
|
| +++ b/chrome/browser/ui/views/bubble/bubble.cc
|
| @@ -55,6 +55,10 @@ Bubble* Bubble::Show(views::Widget* parent,
|
| Bubble* bubble = new Bubble;
|
| bubble->InitBubble(parent, position_relative_to, arrow_location,
|
| contents, delegate);
|
| +
|
| + // Register the Escape accelerator for closing.
|
| + bubble->RegisterEscapeAccelerator();
|
| +
|
| return bubble;
|
| }
|
|
|
| @@ -139,7 +143,8 @@ Bubble::Bubble()
|
| show_while_screen_is_locked_(false),
|
| #endif
|
| arrow_location_(BubbleBorder::NONE),
|
| - contents_(NULL) {
|
| + contents_(NULL),
|
| + accelerator_registered_(false) {
|
| }
|
|
|
| #if defined(OS_CHROMEOS)
|
| @@ -267,10 +272,6 @@ void Bubble::InitBubble(views::Widget* parent,
|
| #endif
|
| GetWidget()->SetBounds(window_bounds);
|
|
|
| - // Register the Escape accelerator for closing.
|
| - GetWidget()->GetFocusManager()->RegisterAccelerator(
|
| - views::Accelerator(ui::VKEY_ESCAPE, false, false, false), this);
|
| -
|
| // Done creating the bubble.
|
| NotificationService::current()->Notify(NotificationType::INFO_BUBBLE_CREATED,
|
| Source<Bubble>(this),
|
| @@ -287,6 +288,19 @@ void Bubble::InitBubble(views::Widget* parent,
|
| #endif
|
| }
|
|
|
| +void Bubble::RegisterEscapeAccelerator() {
|
| + GetWidget()->GetFocusManager()->RegisterAccelerator(
|
| + views::Accelerator(ui::VKEY_ESCAPE, false, false, false), this);
|
| + accelerator_registered_ = true;
|
| +}
|
| +
|
| +void Bubble::UnregisterEscapeAccelerator() {
|
| + DCHECK(accelerator_registered_);
|
| + GetWidget()->GetFocusManager()->UnregisterAccelerator(
|
| + views::Accelerator(ui::VKEY_ESCAPE, false, false, false), this);
|
| + accelerator_registered_ = false;
|
| +}
|
| +
|
| BorderContents* Bubble::CreateBorderContents() {
|
| return new BorderContents();
|
| }
|
| @@ -334,8 +348,8 @@ void Bubble::DoClose(bool closed_by_escape) {
|
| if (show_status_ == kClosed)
|
| return;
|
|
|
| - GetWidget()->GetFocusManager()->UnregisterAccelerator(
|
| - views::Accelerator(ui::VKEY_ESCAPE, false, false, false), this);
|
| + if (accelerator_registered_)
|
| + UnregisterEscapeAccelerator();
|
| if (delegate_)
|
| delegate_->BubbleClosing(this, closed_by_escape);
|
| show_status_ = kClosed;
|
|
|