diff options
author | Florian Bruhin <git@the-compiler.org> | 2015-06-20 13:09:32 +0200 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2015-06-20 13:09:32 +0200 |
commit | 4dd23c530afa70abf256542e09e860c806f58af6 (patch) | |
tree | d714ae5bd2e3b5b32649637865fb35cfb2e83f0b | |
parent | e2c375b87409fc42757be782188a4450bd560fb8 (diff) | |
parent | e459ac52cc277e06b6596477b6bcb491390e0198 (diff) | |
download | qutebrowser-4dd23c530afa70abf256542e09e860c806f58af6.tar.gz qutebrowser-4dd23c530afa70abf256542e09e860c806f58af6.zip |
Merge branch 'artur-shaik-caret_on_selection'
-rw-r--r-- | qutebrowser/browser/webview.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/qutebrowser/browser/webview.py b/qutebrowser/browser/webview.py index 5a4fc3b69..f9c838c70 100644 --- a/qutebrowser/browser/webview.py +++ b/qutebrowser/browser/webview.py @@ -460,15 +460,22 @@ class WebView(QWebView): elif mode == usertypes.KeyMode.caret: settings = self.settings() settings.setAttribute(QWebSettings.CaretBrowsingEnabled, True) - self.selection_enabled = False + self.selection_enabled = bool(self.page().selectedText()) if self.isVisible(): # Sometimes the caret isn't immediately visible, but unfocusing # and refocusing it fixes that. self.clearFocus() self.setFocus(Qt.OtherFocusReason) - self.page().currentFrame().evaluateJavaScript( - utils.read_file('javascript/position_caret.js')) + + # Move the caret to the first element in the viewport if there + # isn't any text which is already selected. + # + # Note: We can't use hasSelection() here, as that's always + # true in caret mode. + if not self.page().selectedText(): + self.page().currentFrame().evaluateJavaScript( + utils.read_file('javascript/position_caret.js')) @pyqtSlot(usertypes.KeyMode) def on_mode_left(self, mode): |