--- a/WebBrowser/QtHelp/HelpSearchWidget.py Thu Jul 14 18:56:39 2016 +0200 +++ b/WebBrowser/QtHelp/HelpSearchWidget.py Sun Jul 17 15:36:11 2016 +0200 @@ -18,24 +18,32 @@ """ Class implementing a window for showing the QtHelp index. - @signal linkActivated(QUrl) emitted when a search result entry is activated @signal escapePressed() emitted when the ESC key was pressed + @signal openUrl(QUrl, str) emitted to open a search result entry in the + current tab + @signal newTab(QUrl, str) emitted to open a search result entry in a + new tab + @signal newBackgroundTab(QUrl, str) emitted to open a search result entry + in a new background tab + @signal newWindow(QUrl, str) emitted to open a search result entry in a + new window """ - linkActivated = pyqtSignal(QUrl) escapePressed = pyqtSignal() + openUrl = pyqtSignal(QUrl) + newTab = pyqtSignal(QUrl) + newBackgroundTab = pyqtSignal(QUrl) + newWindow = pyqtSignal(QUrl) - def __init__(self, engine, mainWindow, parent=None): + def __init__(self, engine, parent=None): """ Constructor @param engine reference to the help search engine (QHelpSearchEngine) - @param mainWindow reference to the main window object (QMainWindow) @param parent reference to the parent widget (QWidget) """ super(HelpSearchWidget, self).__init__(parent) self.__engine = engine - self.__mw = mainWindow self.__layout = QVBoxLayout(self) @@ -48,7 +56,7 @@ self.setFocusProxy(self.__query) self.__query.search.connect(self.__search) - self.__result.requestShowLink.connect(self.linkActivated) + self.__result.requestShowLink.connect(self.openUrl) self.__engine.searchingStarted.connect(self.__searchingStarted) self.__engine.searchingFinished.connect(self.__searchingFinished) @@ -90,10 +98,15 @@ event.type() == QEvent.MouseButtonRelease: link = self.__result.linkAt(event.pos()) if not link.isEmpty() and link.isValid(): - ctrl = event.modifiers() & Qt.ControlModifier - if (event.button() == Qt.LeftButton and ctrl) or \ - event.button() == Qt.MidButton: - self.__mw.newTab(link) + if event.button() == Qt.LeftButton: + if event.modifiers() & Qt.ControlModifier: + self.newTab.emit(link) + elif event.modifiers() & Qt.ShiftModifier: + self.newWindow.emit(link) + else: + self.openUrl.emit(link) + elif event.button() == Qt.MidButton: + self.newTab.emit(link) return QWidget.eventFilter(self, watched, event) @@ -131,9 +144,16 @@ menu = QMenu() curTab = menu.addAction(self.tr("Open Link")) newTab = menu.addAction(self.tr("Open Link in New Tab")) + newBackgroundTab = menu.addAction( + self.tr("Open Link in Background Tab")) + newWindow = menu.addAction(self.tr("Open Link in New Window")) menu.move(evt.globalPos()) act = menu.exec_() if act == curTab: - self.linkActivated.emit(link) + self.openUrl.emit(link) elif act == newTab: - self.__mw.newTab(link) + self.newTab.emit(link) + elif act == newBackgroundTab: + self.newBackgroundTab.emit(link) + elif act == newWindow: + self.newWindow.emit(link)