From bb647123b722e044400250bc079cb7d09c6718f5 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 26 Feb 2018 14:13:46 +0100 Subject: [PATCH] Fix invalid key sequences --- qutebrowser/keyinput/keyutils.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py index a82acbced..53d9fe2c3 100644 --- a/qutebrowser/keyinput/keyutils.py +++ b/qutebrowser/keyinput/keyutils.py @@ -137,7 +137,11 @@ class KeyParseError(Exception): """Raised by _parse_single_key/parse_keystring on parse errors.""" def __init__(self, keystr, error): - super().__init__("Could not parse {!r}: {}".format(keystr, error)) + if keystr is None: + msg = "Could not parse keystring: {}".format(error) + else: + msg = "Could not parse {!r}: {}".format(keystr, error) + super().__init__(msg) def _parse_keystring(keystr): @@ -322,9 +326,10 @@ class KeySequence: def _iter_keys(self): return itertools.chain.from_iterable(self._sequences) - def _validate(self): + def _validate(self, keystr=None): for info in self: - assert info.key != Qt.Key_unknown + if info.key == Qt.Key_unknown: + raise KeyParseError(keystr, "Got unknown key!") def matches(self, other): # FIXME test this @@ -376,5 +381,5 @@ class KeySequence: sequence = QKeySequence(', '.join(sub)) new._sequences.append(sequence) assert len(new) > 0 - new._validate() + new._validate(keystr) return new