From 5d6eedcd496f5656bf58579830b543b27cf69454 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 11 Jul 2016 14:36:57 +0200 Subject: [PATCH] Move URL/title handling to AbstractTab --- qutebrowser/browser/browsertab.py | 8 ++++++++ qutebrowser/browser/webengine/webenginetab.py | 1 + qutebrowser/browser/webkit/webkittab.py | 1 + qutebrowser/browser/webkit/webview.py | 16 ---------------- 4 files changed, 10 insertions(+), 16 deletions(-) diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py index 4515694b2..09ef17f97 100644 --- a/qutebrowser/browser/browsertab.py +++ b/qutebrowser/browser/browsertab.py @@ -497,6 +497,12 @@ class AbstractTab(QWidget): self._load_status = val self.load_status_changed.emit(val.name) + @pyqtSlot(QUrl) + def _on_url_changed(self, url): + """Update title when URL has changed and no title is available.""" + if url.isValid() and not self.title(): + self.title_changed.emit(url().toDisplayString()) + @pyqtSlot() def _on_load_started(self): self._progress = 0 @@ -518,6 +524,8 @@ class AbstractTab(QWidget): else: self._set_load_status(usertypes.LoadStatus.error) self.load_finished.emit(ok) + if not self.title(): + self.title_changed.emit(self.url().toDisplayString()) @pyqtSlot(int) def _on_load_progress(self, perc): diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py index 61ba16972..fefbe9eac 100644 --- a/qutebrowser/browser/webengine/webenginetab.py +++ b/qutebrowser/browser/webengine/webenginetab.py @@ -261,6 +261,7 @@ class WebEngineTab(browsertab.AbstractTab): self.backend = usertypes.Backend.QtWebEngine def openurl(self, url): + self.title_changed.emit(url.toDisplayString()) self._widget.load(url) def url(self): diff --git a/qutebrowser/browser/webkit/webkittab.py b/qutebrowser/browser/webkit/webkittab.py index 19c6f7836..15c292193 100644 --- a/qutebrowser/browser/webkit/webkittab.py +++ b/qutebrowser/browser/webkit/webkittab.py @@ -467,6 +467,7 @@ class WebKitTab(browsertab.AbstractTab): self.backend = usertypes.Backend.QtWebKit def openurl(self, url): + self.title_changed.emit(url.toDisplayString()) self._widget.openurl(url) def url(self): diff --git a/qutebrowser/browser/webkit/webview.py b/qutebrowser/browser/webkit/webview.py index 9b2da7353..9cba9cb6f 100644 --- a/qutebrowser/browser/webkit/webview.py +++ b/qutebrowser/browser/webkit/webview.py @@ -96,7 +96,6 @@ class WebView(QWebView): mode_manager.left.connect(self.on_mode_left) if config.get('input', 'rocker-gestures'): self.setContextMenuPolicy(Qt.PreventContextMenu) - self.urlChanged.connect(self.on_url_changed) objreg.get('config').changed.connect(self.on_config_changed) @pyqtSlot() @@ -287,9 +286,6 @@ class WebView(QWebView): url: The URL to load as QUrl """ qtutils.ensure_valid(url) - urlstr = url.toDisplayString() - log.webview.debug("New title: {}".format(urlstr)) - self.titleChanged.emit(urlstr) self.load(url) if url.scheme() == 'qute': frame = self.page().mainFrame() @@ -308,16 +304,6 @@ class WebView(QWebView): bridge = objreg.get('js-bridge') frame.addToJavaScriptWindowObject('qute', bridge) - @pyqtSlot('QUrl') - def on_url_changed(self, url): - """Update title when URL has changed. - - If the URL is invalid, we just ignore it here. - """ - if url.isValid(): - if not self.title(): - self.titleChanged.emit(self.url().toDisplayString()) - @pyqtSlot('QMouseEvent') def on_mouse_event(self, evt): """Post a new mouse event from a hintmanager.""" @@ -334,8 +320,6 @@ class WebView(QWebView): See https://github.com/The-Compiler/qutebrowser/issues/84 """ ok = not self.page().error_occurred - if not self.title(): - self.titleChanged.emit(self.url().toDisplayString()) self._handle_auto_insert_mode(ok) def _handle_auto_insert_mode(self, ok):