--- a/WebBrowser/WebBrowserWebSearchWidget.py Sun Mar 04 13:04:58 2018 +0100 +++ b/WebBrowser/WebBrowserWebSearchWidget.py Sun Mar 04 14:52:32 2018 +0100 @@ -55,7 +55,8 @@ self.__currentEngine = "" self.__enginesMenu = QMenu(self) - self.__enginesMenu.triggered.connect(self.__changeCurrentEngine) + self.__enginesMenu.triggered.connect( + self.__handleEnginesMenuActionTriggered) self.__engineButton = E5LineEditButton(self) self.__engineButton.setMenu(self.__enginesMenu) @@ -249,8 +250,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: @@ -285,38 +284,32 @@ self.tr("Add '{0}'").format(title)) action.setData(url) action.setIcon(cb.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): """