diff --git a/atom/browser/ui/views/menu_bar.cc b/atom/browser/ui/views/menu_bar.cc index e403b0737809..332045b2ad76 100644 --- a/atom/browser/ui/views/menu_bar.cc +++ b/atom/browser/ui/views/menu_bar.cc @@ -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) { diff --git a/atom/browser/ui/views/menu_delegate.cc b/atom/browser/ui/views/menu_delegate.cc index 3a1a151b7269..00aa956e6c81 100644 --- a/atom/browser/ui/views/menu_delegate.cc +++ b/atom/browser/ui/views/menu_delegate.cc @@ -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, diff --git a/atom/browser/ui/views/menu_delegate.h b/atom/browser/ui/views/menu_delegate.h index f813f9cc7d0b..909c78a416e5 100644 --- a/atom/browser/ui/views/menu_delegate.h +++ b/atom/browser/ui/views/menu_delegate.h @@ -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,