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
		Add a link
		
	
		Reference in a new issue