From 9945fc51480b8cd96df601d5d8aaf7e93305c90e Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 3 Jul 2017 12:47:02 -0700 Subject: [PATCH] Don't destroy menu delegate until OnMenuClosed fires --- atom/browser/ui/views/menu_bar.cc | 5 +++-- atom/browser/ui/views/menu_delegate.cc | 5 +++++ atom/browser/ui/views/menu_delegate.h | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) 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,