--- 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,