Don't destroy menu delegate until OnMenuClosed fires

This commit is contained in:
Kevin Sawicki 2017-07-03 12:47:02 -07:00 committed by Aleksei Kuzmin
parent ad33e569d6
commit 9945fc5148
3 changed files with 10 additions and 2 deletions

View file

@ -153,8 +153,9 @@ void MenuBar::OnMenuButtonClicked(views::MenuButton* source,
return;
}
MenuDelegate menu_delegate(this);
menu_delegate.RunMenu(menu_model_->GetSubmenuModelAt(id), source);
// Deleted in MenuDelegate::OnMenuClosed
MenuDelegate* menu_delegate = new MenuDelegate(this);
menu_delegate->RunMenu(menu_model_->GetSubmenuModelAt(id), source);
}
void MenuBar::OnNativeThemeChanged(const ui::NativeTheme* theme) {

View file

@ -95,6 +95,11 @@ void MenuDelegate::WillHideMenu(views::MenuItemView* menu) {
adapter_->WillHideMenu(menu);
}
void MenuDelegate::OnMenuClosed(views::MenuItemView* menu,
views::MenuRunner::RunResult result) {
delete this;
}
views::MenuItemView* MenuDelegate::GetSiblingMenu(
views::MenuItemView* menu,
const gfx::Point& screen_point,

View file

@ -40,6 +40,8 @@ class MenuDelegate : public views::MenuDelegate {
void SelectionChanged(views::MenuItemView* menu) override;
void WillShowMenu(views::MenuItemView* menu) override;
void WillHideMenu(views::MenuItemView* menu) override;
void OnMenuClosed(views::MenuItemView* menu,
views::MenuRunner::RunResult result) override;
views::MenuItemView* GetSiblingMenu(
views::MenuItemView* menu,
const gfx::Point& screen_point,