| // Copyright 2016 The Chromium Embedded Framework Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be found |
| // in the LICENSE file. |
| |
| #include "libcef/browser/views/menu_runner_views.h" |
| |
| #include "libcef/browser/browser_host_impl.h" |
| #include "libcef/browser/views/browser_view_impl.h" |
| |
| CefMenuRunnerViews::CefMenuRunnerViews(CefBrowserViewImpl* browser_view) |
| : browser_view_(browser_view) {} |
| |
| bool CefMenuRunnerViews::RunContextMenu( |
| CefBrowserHostImpl* browser, |
| CefMenuModelImpl* model, |
| const content::ContextMenuParams& params) { |
| CefRefPtr<CefWindow> window = browser_view_->GetWindow(); |
| if (!window) |
| return false; |
| |
| CefPoint screen_point(params.x, params.y); |
| browser_view_->ConvertPointToScreen(screen_point); |
| |
| window->ShowMenu(model, screen_point, CEF_MENU_ANCHOR_TOPRIGHT); |
| return true; |
| } |
| |
| void CefMenuRunnerViews::CancelContextMenu() { |
| CefRefPtr<CefWindow> window = browser_view_->GetWindow(); |
| if (window) |
| window->CancelMenu(); |
| } |
| |
| bool CefMenuRunnerViews::FormatLabel(base::string16& label) { |
| // Remove the accelerator indicator (&) from label strings. |
| const char16 replace[] = {L'&', 0}; |
| return base::ReplaceChars(label, replace, base::string16(), &label); |
| } |