def acceptNavigationRequest(self, url: QUrl, typ: QWebEnginePage.NavigationType, is_main_frame: bool) -> bool: """Override acceptNavigationRequest to forward it to the tab API.""" type_map = { QWebEnginePage.NavigationTypeLinkClicked: usertypes.NavigationRequest.Type.link_clicked, QWebEnginePage.NavigationTypeTyped: usertypes.NavigationRequest.Type.typed, QWebEnginePage.NavigationTypeFormSubmitted: usertypes.NavigationRequest.Type.form_submitted, QWebEnginePage.NavigationTypeBackForward: usertypes.NavigationRequest.Type.back_forward, QWebEnginePage.NavigationTypeReload: usertypes.NavigationRequest.Type.reloaded, QWebEnginePage.NavigationTypeOther: usertypes.NavigationRequest.Type.other, } try: type_map[QWebEnginePage.NavigationTypeRedirect] = ( usertypes.NavigationRequest.Type.redirect) except AttributeError: # Added in Qt 5.14 pass navigation = usertypes.NavigationRequest( url=url, navigation_type=type_map.get( typ, usertypes.NavigationRequest.Type.other), is_main_frame=is_main_frame) self.navigation_request.emit(navigation) return navigation.accepted
def acceptNavigationRequest(self, url: QUrl, typ: QWebEnginePage.NavigationType, is_main_frame: bool) -> bool: """Override acceptNavigationRequest to forward it to the tab API.""" type_map = { QWebEnginePage.NavigationTypeLinkClicked: usertypes.NavigationRequest.Type.link_clicked, QWebEnginePage.NavigationTypeTyped: usertypes.NavigationRequest.Type.typed, QWebEnginePage.NavigationTypeFormSubmitted: usertypes.NavigationRequest.Type.form_submitted, QWebEnginePage.NavigationTypeBackForward: usertypes.NavigationRequest.Type.back_forward, QWebEnginePage.NavigationTypeReload: usertypes.NavigationRequest.Type.reloaded, QWebEnginePage.NavigationTypeOther: usertypes.NavigationRequest.Type.other, } navigation = usertypes.NavigationRequest(url=url, navigation_type=type_map[typ], is_main_frame=is_main_frame) self.navigation_request.emit(navigation) return navigation.accepted
def acceptNavigationRequest(self, frame: QWebFrame, request: QNetworkRequest, typ: QWebPage.NavigationType) -> bool: """Override acceptNavigationRequest to handle clicked links. Setting linkDelegationPolicy to DelegateAllLinks and using a slot bound to linkClicked won't work correctly, because when in a frameset, we have no idea in which frame the link should be opened. Checks if it should open it in a tab (middle-click or control) or not, and then conditionally opens the URL here or in another tab/window. """ type_map = { QWebPage.NavigationTypeLinkClicked: usertypes.NavigationRequest.Type.link_clicked, QWebPage.NavigationTypeFormSubmitted: usertypes.NavigationRequest.Type.form_submitted, QWebPage.NavigationTypeFormResubmitted: usertypes.NavigationRequest.Type.form_resubmitted, QWebPage.NavigationTypeBackOrForward: usertypes.NavigationRequest.Type.back_forward, QWebPage.NavigationTypeReload: usertypes.NavigationRequest.Type.reloaded, QWebPage.NavigationTypeOther: usertypes.NavigationRequest.Type.other, } is_main_frame = frame is self.mainFrame() navigation = usertypes.NavigationRequest(url=request.url(), navigation_type=type_map[typ], is_main_frame=is_main_frame) if navigation.navigation_type == navigation.Type.reloaded: self.reloading.emit(navigation.url) self.navigation_request.emit(navigation) return navigation.accepted