From 60b363fa3b576cdc5a96586363fa34872a2a2beb Mon Sep 17 00:00:00 2001 From: Catalin Fratila Date: Tue, 1 Aug 2017 12:15:49 +0200 Subject: [PATCH] Fixing Windows tray icon content menu - based on chrome/browser/ui/views/status_icons/status_icon_win.cc --- atom/browser/ui/win/notify_icon.cc | 6 +++--- atom/browser/ui/win/notify_icon.h | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/atom/browser/ui/win/notify_icon.cc b/atom/browser/ui/win/notify_icon.cc index df9a65dddb..7d01855aec 100644 --- a/atom/browser/ui/win/notify_icon.cc +++ b/atom/browser/ui/win/notify_icon.cc @@ -147,10 +147,10 @@ void NotifyIcon::PopUpContextMenu(const gfx::Point& pos, if (pos.IsOrigin()) rect.set_origin(display::Screen::GetScreen()->GetCursorScreenPoint()); - views::MenuRunner menu_runner( + menu_runner_.reset(new views::MenuRunner( menu_model != nullptr ? menu_model : menu_model_, - views::MenuRunner::CONTEXT_MENU | views::MenuRunner::HAS_MNEMONICS); - ignore_result(menu_runner.RunMenuAt( + views::MenuRunner::CONTEXT_MENU | views::MenuRunner::HAS_MNEMONICS)); + ignore_result(menu_runner_->RunMenuAt( NULL, NULL, rect, views::MENU_ANCHOR_TOPLEFT, ui::MENU_SOURCE_MOUSE)); } diff --git a/atom/browser/ui/win/notify_icon.h b/atom/browser/ui/win/notify_icon.h index 5daf15845f..d0053ae70c 100644 --- a/atom/browser/ui/win/notify_icon.h +++ b/atom/browser/ui/win/notify_icon.h @@ -20,6 +20,10 @@ namespace gfx { class Point; } +namespace views { +class MenuRunner; +} + namespace atom { class NotifyIconHost; @@ -77,6 +81,9 @@ class NotifyIcon : public TrayIcon { // The context menu. AtomMenuModel* menu_model_; + // Context menu associated with this icon (if any). + std::unique_ptr menu_runner_; + DISALLOW_COPY_AND_ASSIGN(NotifyIcon); };