summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2018-05-22 12:25:45 +0200
committerFlorian Bruhin <git@the-compiler.org>2018-05-22 12:29:09 +0200
commite7b00ace7312d23fc0f2ee549ca4bd07d98973c5 (patch)
tree17cfd33d4a1ac4bcb6a7840920fdaad409f3f7b5
parent442bdd4a4f153c9c5b72834379e2ef7835181d91 (diff)
downloadqutebrowser-e7b00ace7312d23fc0f2ee549ca4bd07d98973c5.tar.gz
qutebrowser-e7b00ace7312d23fc0f2ee549ca4bd07d98973c5.zip
Handle ² keypress correctly
Turns out str.isdigit() also handles ² as a digit, but int('²') causes a ValueError. Here we use `string.digits` instead, which is '0123456789'. Fixes #3743 (cherry picked from commit 29ad252278a3dab5f7d11181f93f65ef7b728d80)
-rw-r--r--qutebrowser/keyinput/basekeyparser.py4
-rw-r--r--tests/unit/keyinput/test_basekeyparser.py4
2 files changed, 7 insertions, 1 deletions
diff --git a/qutebrowser/keyinput/basekeyparser.py b/qutebrowser/keyinput/basekeyparser.py
index f0f2c6f28..8161293cc 100644
--- a/qutebrowser/keyinput/basekeyparser.py
+++ b/qutebrowser/keyinput/basekeyparser.py
@@ -19,6 +19,8 @@
"""Base class for vim-like key sequence parser."""
+import string
+
from PyQt5.QtCore import pyqtSignal, QObject
from PyQt5.QtGui import QKeySequence
@@ -136,7 +138,7 @@ class BaseKeyParser(QObject):
def _match_count(self, sequence, dry_run):
"""Try to match a key as count."""
txt = str(sequence[-1]) # To account for sequences changed above.
- if (txt.isdigit() and self._supports_count and
+ if (txt in string.digits and self._supports_count and
not (not self._count and txt == '0')):
self._debug_log("Trying match as count")
assert len(txt) == 1, txt
diff --git a/tests/unit/keyinput/test_basekeyparser.py b/tests/unit/keyinput/test_basekeyparser.py
index 7915e2b75..135033ecd 100644
--- a/tests/unit/keyinput/test_basekeyparser.py
+++ b/tests/unit/keyinput/test_basekeyparser.py
@@ -320,6 +320,10 @@ class TestCount:
keyparser.execute.assert_called_once_with('message-info ccc', 23)
assert not keyparser._sequence
+ def test_superscript(self, handle_text, keyparser):
+ # https://github.com/qutebrowser/qutebrowser/issues/3743
+ handle_text(Qt.Key_twosuperior, Qt.Key_B, Qt.Key_A)
+
def test_count_keystring_update(self, qtbot, handle_text, keyparser):
"""Make sure the keystring is updated correctly when entering count."""
with qtbot.waitSignals([keyparser.keystring_updated,