--- a/src/eric7/HelpViewer/HelpViewerImplQWE.py Fri Dec 23 10:58:36 2022 +0100 +++ b/src/eric7/HelpViewer/HelpViewerImplQWE.py Fri Dec 23 11:35:54 2022 +0100 @@ -11,7 +11,7 @@ import functools from PyQt6.QtCore import QEvent, QPoint, Qt, QTimer, QUrl, pyqtSlot -from PyQt6.QtGui import QClipboard, QContextMenuEvent, QGuiApplication +from PyQt6.QtGui import QClipboard, QGuiApplication from PyQt6.QtWebEngineCore import QWebEngineNewWindowRequest, QWebEnginePage from PyQt6.QtWebEngineWidgets import QWebEngineView from PyQt6.QtWidgets import QMenu @@ -74,6 +74,9 @@ self.__menu = QMenu(self) + self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) + self.customContextMenuRequested.connect(self.__showContextMenu) + def __createNewPage(self): """ Private method to create a new page object. @@ -539,37 +542,20 @@ ## Context menu related methods below ####################################################################### - def contextMenuEvent(self, evt): - """ - Protected method called to create a context menu. - - This method is overridden from QWebEngineView. - - @param evt reference to the context menu event object - @type QContextMenuEvent + @pyqtSlot(QPoint) + def __showContextMenu(self, pos): """ - pos = evt.pos() - reason = evt.reason() - QTimer.singleShot( - 0, lambda: self._contextMenuEvent(QContextMenuEvent(reason, pos)) - ) - # needs to be done this way because contextMenuEvent is blocking - # the main loop + Private slot to show a context menu. - def _contextMenuEvent(self, evt): - """ - Protected method called to create a context menu. - - @param evt reference to the context menu event object - (QContextMenuEvent) + @param pos position for the context menu + @type QPoint """ self.__menu.clear() self.__createContextMenu(self.__menu) if not self.__menu.isEmpty(): - pos = evt.globalPos() - self.__menu.popup(QPoint(pos.x(), pos.y() + 1)) + self.__menu.popup(self.mapToGlobal(pos)) def __createContextMenu(self, menu): """