summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2020-05-22 19:12:49 +0200
committerFlorian Bruhin <me@the-compiler.org>2020-05-22 20:48:06 +0200
commit0f839b848b9e7738d14bce3311e3cacf8e02019f (patch)
treea023eedd9a21f6cb6c37dad8d23dbb232c347606
parent781a68a10e10f559575f23c6ed8faa2fb46ab7d9 (diff)
downloadqutebrowser-0f839b848b9e7738d14bce3311e3cacf8e02019f.tar.gz
qutebrowser-0f839b848b9e7738d14bce3311e3cacf8e02019f.zip
caret: Style improvements for line mode
-rw-r--r--qutebrowser/browser/browsertab.py1
-rw-r--r--qutebrowser/browser/webkit/webkittab.py24
-rw-r--r--qutebrowser/javascript/caret.js2
-rw-r--r--tests/unit/browser/test_caret.py25
4 files changed, 24 insertions, 28 deletions
diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py
index 16ddeef8b..f37d143b6 100644
--- a/qutebrowser/browser/browsertab.py
+++ b/qutebrowser/browser/browsertab.py
@@ -441,7 +441,6 @@ class AbstractCaret(QObject):
"""Attribute ``caret`` of AbstractTab for caret browsing."""
#: Signal emitted when the selection was toggled.
- #: (argument - whether the selection is now active)
selection_toggled = pyqtSignal(SelectionState)
#: Emitted when a ``follow_selection`` action is done.
follow_selected_done = pyqtSignal()
diff --git a/qutebrowser/browser/webkit/webkittab.py b/qutebrowser/browser/webkit/webkittab.py
index 0a60e073b..e73833f67 100644
--- a/qutebrowser/browser/webkit/webkittab.py
+++ b/qutebrowser/browser/webkit/webkittab.py
@@ -204,8 +204,7 @@ class WebKitCaret(browsertab.AbstractCaret):
def _on_mode_left(self, _mode):
settings = self._widget.settings()
if settings.testAttribute(QWebSettings.CaretBrowsingEnabled):
- if (self.selection_state is not
- browsertab.SelectionState.none and
+ if (self.selection_state is not browsertab.SelectionState.none and
self._widget.hasSelection()):
# Remove selection if it exists
self._widget.triggerPageAction(QWebPage.MoveToNextChar)
@@ -414,24 +413,21 @@ class WebKitCaret(browsertab.AbstractCaret):
# direction of selection (if anchor is to the left or right
# of focus) has to be checked before moving selection
# to the end of line
- direction = self._js_selection_direction()
- if direction:
+ if self._js_selection_left_to_right():
self._widget.triggerPageAction(QWebPage.SelectEndOfLine)
def _select_line_to_start(self):
- direction = self._js_selection_direction()
- if not direction:
+ if not self._js_selection_left_to_right():
self._widget.triggerPageAction(QWebPage.SelectStartOfLine)
- def _js_selection_direction(self):
- # return true if selection's direction
- # is left to right else false
+ def _js_selection_left_to_right(self):
+ """Return True iff the selection's direction is left to right."""
return self._tab.private_api.run_js_sync("""
- var sel = window.getSelection();
- var position = sel.anchorNode.compareDocumentPosition(sel.focusNode);
- (!position && sel.anchorOffset < sel.focusOffset ||
- position === Node.DOCUMENT_POSITION_FOLLOWING);
- """)
+ var sel = window.getSelection();
+ var position = sel.anchorNode.compareDocumentPosition(sel.focusNode);
+ (!position && sel.anchorOffset < sel.focusOffset ||
+ position === Node.DOCUMENT_POSITION_FOLLOWING);
+ """)
def _follow_selected(self, *, tab=False):
if QWebSettings.globalSettings().testAttribute(
diff --git a/qutebrowser/javascript/caret.js b/qutebrowser/javascript/caret.js
index 51a1cf7cf..e2063a2d4 100644
--- a/qutebrowser/javascript/caret.js
+++ b/qutebrowser/javascript/caret.js
@@ -1176,7 +1176,7 @@ window._qutebrowser.caret = (function() {
};
CaretBrowsing.updateLineSelection = function(direction, granularity) {
- if (!(granularity === "character") && !(granularity === "word")) {
+ if (granularity !== "character" && granularity !== "word") {
window.
getSelection().
modify("extend", direction, granularity);
diff --git a/tests/unit/browser/test_caret.py b/tests/unit/browser/test_caret.py
index 13994a654..2b65081f0 100644
--- a/tests/unit/browser/test_caret.py
+++ b/tests/unit/browser/test_caret.py
@@ -73,7 +73,7 @@ class Selection:
def check_multiline(self, expected, *, strip=False):
self.check(textwrap.dedent(expected).strip(), strip=strip)
- def toggle(self, line=False):
+ def toggle(self, *, line=False):
with self._qtbot.wait_signal(self._caret.selection_toggled):
self._caret.toggle_selection(line=line)
@@ -396,24 +396,24 @@ class TestReverse:
class TestLineSelection:
def test_toggle(self, caret, selection):
- selection.toggle(True)
+ selection.toggle(line=True)
selection.check("one two three")
def test_toggle_untoggle(self, caret, selection):
selection.toggle()
selection.check("")
- selection.toggle(True)
+ selection.toggle(line=True)
selection.check("one two three")
selection.toggle()
selection.check("one two three")
def test_from_center(self, caret, selection):
caret.move_to_next_char(4)
- selection.toggle(True)
+ selection.toggle(line=True)
selection.check("one two three")
def test_more_lines(self, caret, selection):
- selection.toggle(True)
+ selection.toggle(line=True)
caret.move_to_next_line(2)
selection.check_multiline("""
one two three
@@ -423,26 +423,26 @@ class TestLineSelection:
""", strip=True)
def test_not_selecting_char(self, caret, selection):
- selection.toggle(True)
+ selection.toggle(line=True)
caret.move_to_next_char()
selection.check("one two three")
caret.move_to_prev_char()
selection.check("one two three")
def test_selecting_prev_next_word(self, caret, selection):
- selection.toggle(True)
+ selection.toggle(line=True)
caret.move_to_next_word()
selection.check("one two three")
caret.move_to_prev_word()
selection.check("one two three")
def test_selecting_end_word(self, caret, selection):
- selection.toggle(True)
+ selection.toggle(line=True)
caret.move_to_end_of_word()
selection.check("one two three")
def test_selecting_prev_next_line(self, caret, selection):
- selection.toggle(True)
+ selection.toggle(line=True)
caret.move_to_next_line()
selection.check_multiline("""
one two three
@@ -452,14 +452,14 @@ class TestLineSelection:
selection.check("one two three")
def test_not_selecting_start_end_line(self, caret, selection):
- selection.toggle(True)
+ selection.toggle(line=True)
caret.move_to_end_of_line()
selection.check("one two three")
caret.move_to_start_of_line()
selection.check("one two three")
def test_selecting_block(self, caret, selection):
- selection.toggle(True)
+ selection.toggle(line=True)
caret.move_to_end_of_next_block()
selection.check_multiline("""
one two three
@@ -467,7 +467,7 @@ class TestLineSelection:
""", strip=True)
def test_selecting_start_end_document(self, caret, selection):
- selection.toggle(True)
+ selection.toggle(line=True)
caret.move_to_end_of_document()
selection.check_multiline("""
one two three
@@ -476,5 +476,6 @@ class TestLineSelection:
four five six
vier fünf sechs
""", strip=True)
+
caret.move_to_start_of_document()
selection.check("one two three")