From 94d394001e42d168f74b72ecf8e65fb0f5b524d9 Mon Sep 17 00:00:00 2001 From: Artur Shaik Date: Thu, 18 Jun 2015 19:47:33 +0600 Subject: [PATCH 1/3] Don't position caret if there is selection on page --- qutebrowser/browser/webview.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/qutebrowser/browser/webview.py b/qutebrowser/browser/webview.py index 5a4fc3b69..cb6181b7a 100644 --- a/qutebrowser/browser/webview.py +++ b/qutebrowser/browser/webview.py @@ -467,8 +467,9 @@ class WebView(QWebView): # and refocusing it fixes that. self.clearFocus() self.setFocus(Qt.OtherFocusReason) - self.page().currentFrame().evaluateJavaScript( - utils.read_file('javascript/position_caret.js')) + if len(self.page().selectedText()) == 0: + self.page().currentFrame().evaluateJavaScript( + utils.read_file('javascript/position_caret.js')) @pyqtSlot(usertypes.KeyMode) def on_mode_left(self, mode): From 5cf1dce89ed0b44be1f5c5b70e4b642d50246b7f Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Sat, 20 Jun 2015 13:06:32 +0200 Subject: [PATCH 2/3] Simplify condition and add comment. --- qutebrowser/browser/webview.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/qutebrowser/browser/webview.py b/qutebrowser/browser/webview.py index cb6181b7a..7f866e732 100644 --- a/qutebrowser/browser/webview.py +++ b/qutebrowser/browser/webview.py @@ -467,7 +467,13 @@ class WebView(QWebView): # and refocusing it fixes that. self.clearFocus() self.setFocus(Qt.OtherFocusReason) - if len(self.page().selectedText()) == 0: + + # 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')) From e459ac52cc277e06b6596477b6bcb491390e0198 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Sat, 20 Jun 2015 13:09:00 +0200 Subject: [PATCH 3/3] Use existing selection when entering caret mode. --- qutebrowser/browser/webview.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qutebrowser/browser/webview.py b/qutebrowser/browser/webview.py index 7f866e732..f9c838c70 100644 --- a/qutebrowser/browser/webview.py +++ b/qutebrowser/browser/webview.py @@ -460,7 +460,7 @@ 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