fix flash menu being unresponsive to commands
This commit is contained in:
parent
85ef42d99e
commit
c586806609
5 changed files with 19 additions and 3 deletions
|
@ -40,6 +40,7 @@ void Menu::AfterInit(v8::Isolate* isolate) {
|
||||||
delegate.Get("getAcceleratorForCommandId", &get_accelerator_);
|
delegate.Get("getAcceleratorForCommandId", &get_accelerator_);
|
||||||
delegate.Get("executeCommand", &execute_command_);
|
delegate.Get("executeCommand", &execute_command_);
|
||||||
delegate.Get("menuWillShow", &menu_will_show_);
|
delegate.Get("menuWillShow", &menu_will_show_);
|
||||||
|
delegate.Get("menuClosed", &menu_closed_);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Menu::IsCommandIdChecked(int command_id) const {
|
bool Menu::IsCommandIdChecked(int command_id) const {
|
||||||
|
@ -75,6 +76,10 @@ void Menu::MenuWillShow(ui::SimpleMenuModel* source) {
|
||||||
menu_will_show_.Run();
|
menu_will_show_.Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Menu::MenuClosed(ui::SimpleMenuModel* source) {
|
||||||
|
menu_closed_.Run();
|
||||||
|
}
|
||||||
|
|
||||||
void Menu::InsertItemAt(
|
void Menu::InsertItemAt(
|
||||||
int index, int command_id, const base::string16& label) {
|
int index, int command_id, const base::string16& label) {
|
||||||
model_->InsertItemAt(index, command_id, label);
|
model_->InsertItemAt(index, command_id, label);
|
||||||
|
|
|
@ -52,6 +52,7 @@ class Menu : public mate::TrackableObject<Menu>,
|
||||||
ui::Accelerator* accelerator) const override;
|
ui::Accelerator* accelerator) const override;
|
||||||
void ExecuteCommand(int command_id, int event_flags) override;
|
void ExecuteCommand(int command_id, int event_flags) override;
|
||||||
void MenuWillShow(ui::SimpleMenuModel* source) 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 PopupAt(Window* window, int x, int y, int positioning_item) = 0;
|
||||||
virtual void ClosePopupAt(int32_t window_id) = 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<v8::Local<v8::Value>(int, bool)> get_accelerator_;
|
||||||
base::Callback<void(v8::Local<v8::Value>, int)> execute_command_;
|
base::Callback<void(v8::Local<v8::Value>, int)> execute_command_;
|
||||||
base::Callback<void()> menu_will_show_;
|
base::Callback<void()> menu_will_show_;
|
||||||
|
base::Callback<void()> menu_closed_;
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(Menu);
|
DISALLOW_COPY_AND_ASSIGN(Menu);
|
||||||
};
|
};
|
||||||
|
|
|
@ -653,8 +653,10 @@ void WebContents::RendererResponsive(content::WebContents* source) {
|
||||||
|
|
||||||
bool WebContents::HandleContextMenu(const content::ContextMenuParams& params) {
|
bool WebContents::HandleContextMenu(const content::ContextMenuParams& params) {
|
||||||
if (params.custom_context.is_pepper_menu) {
|
if (params.custom_context.is_pepper_menu) {
|
||||||
Emit("pepper-context-menu", std::make_pair(params, web_contents()));
|
Emit("pepper-context-menu",
|
||||||
web_contents()->NotifyContextMenuClosed(params.custom_context);
|
std::make_pair(params, web_contents()),
|
||||||
|
base::Bind(&content::WebContents::NotifyContextMenuClosed,
|
||||||
|
base::Unretained(web_contents()), params.custom_context));
|
||||||
} else {
|
} else {
|
||||||
Emit("context-menu", std::make_pair(params, web_contents()));
|
Emit("context-menu", std::make_pair(params, web_contents()));
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,6 +39,9 @@ Menu.prototype._init = function () {
|
||||||
const found = this.groupsMap[id].find(item => item.checked) || null
|
const found = this.groupsMap[id].find(item => item.checked) || null
|
||||||
if (!found) v8Util.setHiddenValue(this.groupsMap[id][0], 'checked', true)
|
if (!found) v8Util.setHiddenValue(this.groupsMap[id][0], 'checked', true)
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
menuClosed: () => {
|
||||||
|
this.emit('closed')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -277,10 +277,14 @@ WebContents.prototype._init = function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
// Handle context menu action request from pepper plugin.
|
// Handle context menu action request from pepper plugin.
|
||||||
this.on('pepper-context-menu', function (event, params) {
|
this.on('pepper-context-menu', function (event, params, callback) {
|
||||||
// Access Menu via electron.Menu to prevent circular require
|
// Access Menu via electron.Menu to prevent circular require
|
||||||
const menu = electron.Menu.buildFromTemplate(params.menu)
|
const menu = electron.Menu.buildFromTemplate(params.menu)
|
||||||
menu.popup(event.sender.getOwnerBrowserWindow(), params.x, params.y)
|
menu.popup(event.sender.getOwnerBrowserWindow(), params.x, params.y)
|
||||||
|
|
||||||
|
menu.on('closed', () => {
|
||||||
|
callback()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
// The devtools requests the webContents to reload.
|
// The devtools requests the webContents to reload.
|
||||||
|
|
Loading…
Add table
Reference in a new issue