| Index: views/controls/button/menu_button.cc
|
| diff --git a/views/controls/button/menu_button.cc b/views/controls/button/menu_button.cc
|
| index 4a1e28ab4fd9e72136ce2f23fba3fc5f0801e72b..b45c2acfdddda3d19ed89b839a7e6e9d8db571ee 100644
|
| --- a/views/controls/button/menu_button.cc
|
| +++ b/views/controls/button/menu_button.cc
|
| @@ -49,11 +49,14 @@ MenuButton::MenuButton(ButtonListener* listener,
|
| menu_delegate_(menu_delegate),
|
| show_menu_marker_(show_menu_marker),
|
| menu_marker_(ResourceBundle::GetSharedInstance().GetBitmapNamed(
|
| - IDR_MENU_DROPARROW)) {
|
| + IDR_MENU_DROPARROW)),
|
| + destroyed_flag_(NULL) {
|
| set_alignment(TextButton::ALIGN_LEFT);
|
| }
|
|
|
| MenuButton::~MenuButton() {
|
| + if (destroyed_flag_)
|
| + *destroyed_flag_ = true;
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| @@ -145,7 +148,17 @@ bool MenuButton::Activate() {
|
| GetRootView()->SetMouseHandler(NULL);
|
|
|
| menu_visible_ = true;
|
| +
|
| + bool destroyed = false;
|
| + destroyed_flag_ = &destroyed;
|
| +
|
| menu_delegate_->RunMenu(this, menu_position);
|
| +
|
| + if (destroyed) {
|
| + // The menu was deleted while showing. Don't attempt any processing.
|
| + return false;
|
| + }
|
| +
|
| menu_visible_ = false;
|
| menu_closed_time_ = Time::Now();
|
|
|
|
|