diff -r bb2989d750ce -r 330ffed830a4 Helpviewer/HelpWebSearchWidget.py --- a/Helpviewer/HelpWebSearchWidget.py Sun Mar 04 14:52:32 2018 +0100 +++ b/Helpviewer/HelpWebSearchWidget.py Sun Mar 04 14:52:46 2018 +0100 @@ -51,6 +51,8 @@ self.__currentEngine = "" self.__enginesMenu = QMenu(self) + self.__enginesMenu.triggered.connect( + self.__handleEnginesMenuActionTriggered) self.__engineButton = E5LineEditButton(self) self.__engineButton.setMenu(self.__enginesMenu) @@ -241,8 +243,6 @@ engine = self.__openSearchManager.engine(engineName) action = OpenSearchEngineAction(engine, self.__enginesMenu) action.setData(engineName) - action.triggered.connect( - lambda: self.__changeCurrentEngine(action)) self.__enginesMenu.addAction(action) if self.__openSearchManager.currentEngineName() == engineName: @@ -278,38 +278,32 @@ self.tr("Add '{0}'").format(title)) action.setData(url) action.setIcon(ct.icon()) - action.triggered.connect( - lambda: self.__addEngineFromUrl(action)) self.__enginesMenu.addSeparator() self.__enginesMenu.addAction(self.__mw.searchEnginesAction()) if self.__recentSearches: - self.__enginesMenu.addAction(self.tr("Clear Recent Searches"), - self.clear) + act = self.__enginesMenu.addAction( + self.tr("Clear Recent Searches")) + act.setData("@@CLEAR@@") - def __changeCurrentEngine(self, action): + def __handleEnginesMenuActionTriggered(self, action): """ - Private slot to handle the selection of a search engine. + Private slot to handle an action of the menu being triggered. @param action reference to the action that triggered @type QAction """ - name = action.data() - self.__openSearchManager.setCurrentEngineName(name) - - def __addEngineFromUrl(self, action): - """ - Private slot to add a search engine given its URL. - - @param action reference to the action that triggered - @type QAction - """ - url = action.data() - if not isinstance(url, QUrl): - return - - self.__openSearchManager.addEngine(url) + actData = action.data() + if isinstance(actData, QUrl): + # add search engine + self.__openSearchManager.addEngine(actData) + elif isinstance(actData, str): + # engine name or special action + if actData == "@@CLEAR@@": + self.clear() + else: + self.__openSearchManager.setCurrentEngineName(actData) def __searchButtonClicked(self): """