fix flash menu being unresponsive to commands

This commit is contained in:
Heilig Benedek 2017-11-27 00:24:25 +01:00 committed by Cheng Zhao
parent 85ef42d99e
commit c586806609
5 changed files with 19 additions and 3 deletions

View file

@ -40,6 +40,7 @@ void Menu::AfterInit(v8::Isolate* isolate) {
delegate.Get("getAcceleratorForCommandId", &get_accelerator_);
delegate.Get("executeCommand", &execute_command_);
delegate.Get("menuWillShow", &menu_will_show_);
delegate.Get("menuClosed", &menu_closed_);
}
bool Menu::IsCommandIdChecked(int command_id) const {
@ -75,6 +76,10 @@ void Menu::MenuWillShow(ui::SimpleMenuModel* source) {
menu_will_show_.Run();
}
void Menu::MenuClosed(ui::SimpleMenuModel* source) {
menu_closed_.Run();
}
void Menu::InsertItemAt(
int index, int command_id, const base::string16& label) {
model_->InsertItemAt(index, command_id, label);

View file

@ -52,6 +52,7 @@ class Menu : public mate::TrackableObject<Menu>,
ui::Accelerator* accelerator) const override;
void ExecuteCommand(int command_id, int event_flags) override;
void MenuWillShow(ui::SimpleMenuModel* source) override;
void MenuClosed(ui::SimpleMenuModel* source) override;
virtual void PopupAt(Window* window, int x, int y, int positioning_item) = 0;
virtual void ClosePopupAt(int32_t window_id) = 0;
@ -93,6 +94,7 @@ class Menu : public mate::TrackableObject<Menu>,
base::Callback<v8::Local<v8::Value>(int, bool)> get_accelerator_;
base::Callback<void(v8::Local<v8::Value>, int)> execute_command_;
base::Callback<void()> menu_will_show_;
base::Callback<void()> menu_closed_;
DISALLOW_COPY_AND_ASSIGN(Menu);
};

View file

@ -653,8 +653,10 @@ void WebContents::RendererResponsive(content::WebContents* source) {
bool WebContents::HandleContextMenu(const content::ContextMenuParams& params) {
if (params.custom_context.is_pepper_menu) {
Emit("pepper-context-menu", std::make_pair(params, web_contents()));
web_contents()->NotifyContextMenuClosed(params.custom_context);
Emit("pepper-context-menu",
std::make_pair(params, web_contents()),
base::Bind(&content::WebContents::NotifyContextMenuClosed,
base::Unretained(web_contents()), params.custom_context));
} else {
Emit("context-menu", std::make_pair(params, web_contents()));
}