WebBrowser/WebBrowserView.py

changeset 5719
73bbb3a8ee41
parent 5707
1273cd92a8f4
child 5721
b4d0cddecd64
--- a/WebBrowser/WebBrowserView.py	Wed Apr 26 19:22:59 2017 +0200
+++ b/WebBrowser/WebBrowserView.py	Thu Apr 27 18:32:57 2017 +0200
@@ -123,6 +123,9 @@
         WebInspector.registerView(self)
         
         if qVersion() >= "5.8.0":
+            if self.parentWidget() is not None:
+                self.parentWidget().installEventFilter(self)
+            
             lay = self.layout()
             lay.currentChanged.connect(
                 lambda: QTimer.singleShot(0, self.__setRwhvqt))
@@ -1325,12 +1328,6 @@
             evt.accept()
             return
         
-        if evt.key() == Qt.Key_Escape:
-            if self.isFullScreen():
-                self.triggerPageAction(QWebEnginePage.ExitFullScreen)
-                evt.accept()
-                return
-        
         super(WebBrowserView, self).keyPressEvent(evt)
     
     def _keyReleaseEvent(self, evt):
@@ -1339,6 +1336,13 @@
         
         @param evt reference to the key event (QKeyEvent)
         """
+        if evt.key() == Qt.Key_Escape:
+            if self.isFullScreen():
+                self.triggerPageAction(QWebEnginePage.ExitFullScreen)
+                evt.accept()
+                self.requestFullScreen(False)
+                return
+        
         super(WebBrowserView, self).keyReleaseEvent(evt)
     
     def focusOutEvent(self, evt):
@@ -1399,9 +1403,16 @@
                     self.grabGesture(Qt.PinchGesture)
                     self.__rwhvqt.grabGesture(Qt.PinchGesture)
                     self.__rwhvqt.installEventFilter(self)
+        else:
+            if obj is self and evt.type() == QEvent.ParentChange and \
+               self.parentWidget is not None:
+                self.parentWidget().installEventFilter(self)
         
         # forward events to WebBrowserView
-        if obj is self.__rwhvqt:
+        if obj is self.__rwhvqt and \
+           evt.type() in [QEvent.KeyPress, QEvent.KeyRelease,
+                          QEvent.MouseButtonPress, QEvent.MouseButtonRelease,
+                          QEvent.MouseMove, QEvent.Wheel, QEvent.Gesture]:
             wasAccepted = evt.isAccepted()
             evt.setAccepted(False)
             if evt.type() == QEvent.KeyPress:
@@ -1422,6 +1433,18 @@
             evt.setAccepted(wasAccepted)
             return ret
         
+        if obj is self.parentWidget() and \
+           evt.type() in [QEvent.KeyPress, QEvent.KeyRelease]:
+            wasAccepted = evt.isAccepted()
+            evt.setAccepted(False)
+            if evt.type() == QEvent.KeyPress:
+                self._keyPressEvent(evt)
+            elif evt.type() == QEvent.KeyRelease:
+                self._keyReleaseEvent(evt)
+            ret = evt.isAccepted()
+            evt.setAccepted(wasAccepted)
+            return ret
+        
         # block already handled events
         if obj is self:
             if evt.type() in [QEvent.KeyPress, QEvent.KeyRelease,

eric ide

mercurial