| Index: ui/views/bubble/bubble_delegate.cc
|
| diff --git a/ui/views/bubble/bubble_delegate.cc b/ui/views/bubble/bubble_delegate.cc
|
| index 184a8ac8007028b4ac4999079f48cf7784a06da7..11dc4fffbb320c9564d7e96fd3d1e7e262b19711 100644
|
| --- a/ui/views/bubble/bubble_delegate.cc
|
| +++ b/ui/views/bubble/bubble_delegate.cc
|
| @@ -51,25 +51,10 @@ Widget* CreateBubbleWidget(BubbleDelegateView* bubble) {
|
| const char BubbleDelegateView::kViewClassName[] = "BubbleDelegateView";
|
|
|
| BubbleDelegateView::BubbleDelegateView()
|
| - : close_on_esc_(true),
|
| - close_on_deactivate_(true),
|
| - anchor_view_storage_id_(ViewStorage::GetInstance()->CreateStorageID()),
|
| - anchor_widget_(NULL),
|
| - arrow_(BubbleBorder::TOP_LEFT),
|
| - shadow_(BubbleBorder::SMALL_SHADOW),
|
| - color_explicitly_set_(false),
|
| - margins_(kDefaultMargin, kDefaultMargin, kDefaultMargin, kDefaultMargin),
|
| - accept_events_(true),
|
| - border_accepts_events_(true),
|
| - adjust_if_offscreen_(true),
|
| - parent_window_(NULL) {
|
| - AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE));
|
| - UpdateColorsFromTheme(GetNativeTheme());
|
| -}
|
| + : BubbleDelegateView(nullptr, BubbleBorder::TOP_LEFT) {}
|
|
|
| -BubbleDelegateView::BubbleDelegateView(
|
| - View* anchor_view,
|
| - BubbleBorder::Arrow arrow)
|
| +BubbleDelegateView::BubbleDelegateView(View* anchor_view,
|
| + BubbleBorder::Arrow arrow)
|
| : close_on_esc_(true),
|
| close_on_deactivate_(true),
|
| anchor_view_storage_id_(ViewStorage::GetInstance()->CreateStorageID()),
|
| @@ -81,8 +66,10 @@ BubbleDelegateView::BubbleDelegateView(
|
| accept_events_(true),
|
| border_accepts_events_(true),
|
| adjust_if_offscreen_(true),
|
| - parent_window_(NULL) {
|
| - SetAnchorView(anchor_view);
|
| + parent_window_(NULL),
|
| + close_reason_(CloseReason::UNKNOWN) {
|
| + if (anchor_view)
|
| + SetAnchorView(anchor_view);
|
| AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE));
|
| UpdateColorsFromTheme(GetNativeTheme());
|
| }
|
| @@ -151,6 +138,14 @@ const char* BubbleDelegateView::GetClassName() const {
|
| return kViewClassName;
|
| }
|
|
|
| +void BubbleDelegateView::OnWidgetClosing(Widget* widget) {
|
| + DCHECK(GetBubbleFrameView());
|
| + if (widget == GetWidget() && close_reason_ == CloseReason::UNKNOWN &&
|
| + GetBubbleFrameView()->close_button_clicked()) {
|
| + close_reason_ = CloseReason::CLOSE_BUTTON;
|
| + }
|
| +}
|
| +
|
| void BubbleDelegateView::OnWidgetDestroying(Widget* widget) {
|
| if (anchor_widget() == widget)
|
| SetAnchorView(NULL);
|
| @@ -175,8 +170,11 @@ void BubbleDelegateView::OnWidgetVisibilityChanged(Widget* widget,
|
|
|
| void BubbleDelegateView::OnWidgetActivationChanged(Widget* widget,
|
| bool active) {
|
| - if (close_on_deactivate() && widget == GetWidget() && !active)
|
| + if (close_on_deactivate() && widget == GetWidget() && !active) {
|
| + if (close_reason_ == CloseReason::UNKNOWN)
|
| + close_reason_ = CloseReason::DEACTIVATION;
|
| GetWidget()->Close();
|
| + }
|
| }
|
|
|
| void BubbleDelegateView::OnWidgetBoundsChanged(Widget* widget,
|
| @@ -221,6 +219,7 @@ bool BubbleDelegateView::AcceleratorPressed(
|
| const ui::Accelerator& accelerator) {
|
| if (!close_on_esc() || accelerator.key_code() != ui::VKEY_ESCAPE)
|
| return false;
|
| + close_reason_ = CloseReason::ESCAPE;
|
| GetWidget()->Close();
|
| return true;
|
| }
|
|
|