src/eric7/HelpViewer/HelpViewerImplQWE.py

branch
eric7
changeset 9643
10839ab864e0
parent 9473
3f23dbf37dbe
child 9653
e67609152c5e
--- 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):
         """

eric ide

mercurial