WebBrowser/WebBrowserView.py

branch
maintenance
changeset 5730
6422afc7adc4
parent 5680
b93cb6353cc0
parent 5721
b4d0cddecd64
child 5752
1860eca908e4
equal deleted inserted replaced
5695:9a71bd9e2e37 5730:6422afc7adc4
121 121
122 self.__inspector = None 122 self.__inspector = None
123 WebInspector.registerView(self) 123 WebInspector.registerView(self)
124 124
125 if qVersion() >= "5.8.0": 125 if qVersion() >= "5.8.0":
126 if self.parentWidget() is not None:
127 self.parentWidget().installEventFilter(self)
128
126 lay = self.layout() 129 lay = self.layout()
127 lay.currentChanged.connect( 130 lay.currentChanged.connect(
128 lambda: QTimer.singleShot(0, self.__setRwhvqt)) 131 lambda: QTimer.singleShot(0, self.__setRwhvqt))
129 self.__setRwhvqt() 132 self.__setRwhvqt()
130 133
1249 self.pageAction(QWebEnginePage.Back).trigger() 1252 self.pageAction(QWebEnginePage.Back).trigger()
1250 evt.accept() 1253 evt.accept()
1251 elif evt.button() == Qt.XButton2: 1254 elif evt.button() == Qt.XButton2:
1252 self.pageAction(QWebEnginePage.Forward).trigger() 1255 self.pageAction(QWebEnginePage.Forward).trigger()
1253 evt.accept() 1256 evt.accept()
1254 else:
1255 super(WebBrowserView, self).mousePressEvent(evt)
1256 1257
1257 def _mouseReleaseEvent(self, evt): 1258 def _mouseReleaseEvent(self, evt):
1258 """ 1259 """
1259 Protected method called by a mouse release event. 1260 Protected method called by a mouse release event.
1260 1261
1281 """ 1282 """
1282 Protected method to handle mouse move events. 1283 Protected method to handle mouse move events.
1283 1284
1284 @param evt reference to the mouse event (QMouseEvent) 1285 @param evt reference to the mouse event (QMouseEvent)
1285 """ 1286 """
1287 if self.__mw and self.__mw.isFullScreen():
1288 if self.__mw.isFullScreenNavigationVisible():
1289 self.__mw.hideFullScreenNavigation()
1290 elif evt.y() < 5:
1291 # mouse is within 5px to the top
1292 self.__mw.showFullScreenNavigation()
1293
1286 if WebBrowserWindow.autoScroller().mouseMove(evt): 1294 if WebBrowserWindow.autoScroller().mouseMove(evt):
1287 evt.accept() 1295 evt.accept()
1288 1296
1289 def _wheelEvent(self, evt): 1297 def _wheelEvent(self, evt):
1290 """ 1298 """
1301 if delta < 0: 1309 if delta < 0:
1302 self.zoomOut() 1310 self.zoomOut()
1303 else: 1311 else:
1304 self.zoomIn() 1312 self.zoomIn()
1305 evt.accept() 1313 evt.accept()
1306 return 1314
1307 1315 elif evt.modifiers() & Qt.ShiftModifier:
1308 if evt.modifiers() & Qt.ShiftModifier:
1309 if delta < 0: 1316 if delta < 0:
1310 self.backward() 1317 self.backward()
1311 else: 1318 else:
1312 self.forward() 1319 self.forward()
1313 evt.accept() 1320 evt.accept()
1314 return
1315
1316 super(WebBrowserView, self).wheelEvent(evt)
1317 1321
1318 def _keyPressEvent(self, evt): 1322 def _keyPressEvent(self, evt):
1319 """ 1323 """
1320 Protected method called by a key press. 1324 Protected method called by a key press.
1321 1325
1323 """ 1327 """
1324 if self.__mw.personalInformationManager().viewKeyPressEvent(self, evt): 1328 if self.__mw.personalInformationManager().viewKeyPressEvent(self, evt):
1325 evt.accept() 1329 evt.accept()
1326 return 1330 return
1327 1331
1332 if evt.key() == Qt.Key_ZoomIn:
1333 self.zoomIn()
1334 evt.accept()
1335 elif evt.key() == Qt.Key_ZoomOut:
1336 self.zoomOut()
1337 evt.accept()
1338 elif evt.key() == Qt.Key_Plus:
1339 if evt.modifiers() & Qt.ControlModifier:
1340 self.zoomIn()
1341 evt.accept()
1342 elif evt.key() == Qt.Key_Minus:
1343 if evt.modifiers() & Qt.ControlModifier:
1344 self.zoomOut()
1345 evt.accept()
1346 elif evt.key() == Qt.Key_0:
1347 if evt.modifiers() & Qt.ControlModifier:
1348 self.zoomReset()
1349 evt.accept()
1350 elif evt.key() == Qt.Key_M:
1351 if evt.modifiers() & Qt.ControlModifier:
1352 self.__muteMedia()
1353 evt.accept()
1354
1355 def _keyReleaseEvent(self, evt):
1356 """
1357 Protected method called by a key release.
1358
1359 @param evt reference to the key event (QKeyEvent)
1360 """
1328 if evt.key() == Qt.Key_Escape: 1361 if evt.key() == Qt.Key_Escape:
1329 if self.isFullScreen(): 1362 if self.isFullScreen():
1330 self.triggerPageAction(QWebEnginePage.ExitFullScreen) 1363 self.triggerPageAction(QWebEnginePage.ExitFullScreen)
1331 evt.accept() 1364 evt.accept()
1332 return 1365 self.requestFullScreen(False)
1333
1334 super(WebBrowserView, self).keyPressEvent(evt)
1335
1336 def _keyReleaseEvent(self, evt):
1337 """
1338 Protected method called by a key release.
1339
1340 @param evt reference to the key event (QKeyEvent)
1341 """
1342 super(WebBrowserView, self).keyReleaseEvent(evt)
1343
1344 def focusOutEvent(self, evt):
1345 """
1346 Protected method called by a focus out event.
1347
1348 @param evt reference to the focus event (QFocusEvent)
1349 """
1350 super(WebBrowserView, self).focusOutEvent(evt)
1351
1352 def event(self, evt):
1353 """
1354 Public method handling events.
1355
1356 @param evt reference to the event (QEvent)
1357 @return flag indicating, if the event was handled (boolean)
1358 """
1359 if evt.type() == QEvent.Gesture:
1360 self._gestureEvent(evt)
1361 return True
1362
1363 return super(WebBrowserView, self).event(evt)
1364 1366
1365 def _gestureEvent(self, evt): 1367 def _gestureEvent(self, evt):
1366 """ 1368 """
1367 Protected method handling gesture events. 1369 Protected method handling gesture events.
1368 1370
1397 "RenderWidgetHostViewQtDelegateWidget"): 1399 "RenderWidgetHostViewQtDelegateWidget"):
1398 self.__rwhvqt = child 1400 self.__rwhvqt = child
1399 self.grabGesture(Qt.PinchGesture) 1401 self.grabGesture(Qt.PinchGesture)
1400 self.__rwhvqt.grabGesture(Qt.PinchGesture) 1402 self.__rwhvqt.grabGesture(Qt.PinchGesture)
1401 self.__rwhvqt.installEventFilter(self) 1403 self.__rwhvqt.installEventFilter(self)
1404 else:
1405 if obj is self and evt.type() == QEvent.ParentChange and \
1406 self.parentWidget() is not None:
1407 self.parentWidget().installEventFilter(self)
1402 1408
1403 # forward events to WebBrowserView 1409 # forward events to WebBrowserView
1404 if obj is self.__rwhvqt: 1410 if obj is self.__rwhvqt and \
1411 evt.type() in [QEvent.KeyPress, QEvent.KeyRelease,
1412 QEvent.MouseButtonPress, QEvent.MouseButtonRelease,
1413 QEvent.MouseMove, QEvent.Wheel, QEvent.Gesture]:
1405 wasAccepted = evt.isAccepted() 1414 wasAccepted = evt.isAccepted()
1406 evt.setAccepted(False) 1415 evt.setAccepted(False)
1407 if evt.type() == QEvent.KeyPress: 1416 if evt.type() == QEvent.KeyPress:
1408 self._keyPressEvent(evt) 1417 self._keyPressEvent(evt)
1409 elif evt.type() == QEvent.KeyRelease: 1418 elif evt.type() == QEvent.KeyRelease:
1420 self._gestureEvent(evt) 1429 self._gestureEvent(evt)
1421 ret = evt.isAccepted() 1430 ret = evt.isAccepted()
1422 evt.setAccepted(wasAccepted) 1431 evt.setAccepted(wasAccepted)
1423 return ret 1432 return ret
1424 1433
1434 if obj is self.parentWidget() and \
1435 evt.type() in [QEvent.KeyPress, QEvent.KeyRelease]:
1436 wasAccepted = evt.isAccepted()
1437 evt.setAccepted(False)
1438 if evt.type() == QEvent.KeyPress:
1439 self._keyPressEvent(evt)
1440 elif evt.type() == QEvent.KeyRelease:
1441 self._keyReleaseEvent(evt)
1442 ret = evt.isAccepted()
1443 evt.setAccepted(wasAccepted)
1444 return ret
1445
1425 # block already handled events 1446 # block already handled events
1426 if obj is self: 1447 if obj is self:
1427 if evt.type() in [QEvent.KeyPress, QEvent.KeyRelease, 1448 if evt.type() in [QEvent.KeyPress, QEvent.KeyRelease,
1428 QEvent.MouseButtonPress, 1449 QEvent.MouseButtonPress,
1429 QEvent.MouseButtonRelease, 1450 QEvent.MouseButtonRelease,
1430 QEvent.Wheel, QEvent.Gesture]: 1451 QEvent.MouseMove, QEvent.Wheel, QEvent.Gesture]:
1431 return True 1452 return True
1453
1454 elif evt.type() == QEvent.Hide:
1455 if self.isFullScreen():
1456 self.triggerPageAction(QWebEnginePage.ExitFullScreen)
1432 1457
1433 return super(WebBrowserView, self).eventFilter(obj, evt) 1458 return super(WebBrowserView, self).eventFilter(obj, evt)
1459
1460 def event(self, evt):
1461 """
1462 Public method handling events.
1463
1464 @param evt reference to the event (QEvent)
1465 @return flag indicating, if the event was handled (boolean)
1466 """
1467 if evt.type() == QEvent.Gesture:
1468 self._gestureEvent(evt)
1469 return True
1470
1471 return super(WebBrowserView, self).event(evt)
1434 1472
1435 def inputWidget(self): 1473 def inputWidget(self):
1436 """ 1474 """
1437 Public method to get a reference to the render widget. 1475 Public method to get a reference to the render widget.
1438 1476

eric ide

mercurial