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; return;
} }
MenuDelegate menu_delegate(this); // Deleted in MenuDelegate::OnMenuClosed
menu_delegate.RunMenu(menu_model_->GetSubmenuModelAt(id), source); MenuDelegate* menu_delegate = new MenuDelegate(this);
menu_delegate->RunMenu(menu_model_->GetSubmenuModelAt(id), source);
} }
void MenuBar::OnNativeThemeChanged(const ui::NativeTheme* theme) { void MenuBar::OnNativeThemeChanged(const ui::NativeTheme* theme) {

View file

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

View file

@ -40,6 +40,8 @@ class MenuDelegate : public views::MenuDelegate {
void SelectionChanged(views::MenuItemView* menu) override; void SelectionChanged(views::MenuItemView* menu) override;
void WillShowMenu(views::MenuItemView* menu) override; void WillShowMenu(views::MenuItemView* menu) override;
void WillHideMenu(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* GetSiblingMenu(
views::MenuItemView* menu, views::MenuItemView* menu,
const gfx::Point& screen_point, const gfx::Point& screen_point,