From 413fdc6f0d3c8b432bf99f87494ca65197afcd5f Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Tue, 6 Mar 2018 16:00:18 +0900 Subject: [PATCH] views: Show menu on window's content view --- atom/browser/api/atom_api_menu_views.cc | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/atom/browser/api/atom_api_menu_views.cc b/atom/browser/api/atom_api_menu_views.cc index 7fdfe0c134..6e710838ac 100644 --- a/atom/browser/api/atom_api_menu_views.cc +++ b/atom/browser/api/atom_api_menu_views.cc @@ -24,19 +24,16 @@ MenuViews::MenuViews(v8::Isolate* isolate, v8::Local wrapper) void MenuViews::PopupAt(BrowserWindow* window, int x, int y, int positioning_item, const base::Closure& callback) { - NativeWindow* native_window = static_cast(window->window()); + auto* native_window = static_cast(window->window()); if (!native_window) return; - auto* web_contents = native_window->inspectable_web_contents(); - if (!web_contents) - return; // (-1, -1) means showing on mouse location. gfx::Point location; if (x == -1 || y == -1) { location = display::Screen::GetScreen()->GetCursorScreenPoint(); } else { - auto* view = web_contents->GetView()->GetWebView(); + views::View* view = native_window; // the instance is also its content view gfx::Point origin = view->bounds().origin(); location = gfx::Point(origin.x() + x, origin.y() + y); } @@ -53,7 +50,7 @@ void MenuViews::PopupAt(BrowserWindow* window, menu_runners_[window_id] = std::unique_ptr(new MenuRunner( model(), flags, close_callback)); menu_runners_[window_id]->RunMenuAt( - static_cast(window->window())->widget(), + native_window->widget(), NULL, gfx::Rect(location, gfx::Size()), views::MENU_ANCHOR_TOPLEFT,