summaryrefslogtreecommitdiff
path: root/qutebrowser/keyinput/keyutils.py
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-03-20 11:10:30 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-03-20 11:10:30 +0100
commit5b6d2c60b46e233d4788a9b34d15fdb7d8d1c114 (patch)
tree56945c1947823ab8134dda1593c575e8587dc772 /qutebrowser/keyinput/keyutils.py
parent40e34c280c352f6b5c61a03022316c5dbf8d13dd (diff)
downloadqutebrowser-5b6d2c60b46e233d4788a9b34d15fdb7d8d1c114.tar.gz
qutebrowser-5b6d2c60b46e233d4788a9b34d15fdb7d8d1c114.zip
Fix bindings.key_mappings with multiple keys
Otherwise, when e.g. doing "<Meta+Up>": "gg" in bindings.key_mappings, there's a crash like: Traceback (most recent call last): File "/usr/lib/python3.9/site-packages/qutebrowser/keyinput/eventfilter.py", line 105, in eventFilter return handler(typing.cast(QKeyEvent, event)) File "/usr/lib/python3.9/site-packages/qutebrowser/keyinput/eventfilter.py", line 75, in _handle_key_event return man.handle_event(event) File "/usr/lib/python3.9/site-packages/qutebrowser/keyinput/modeman.py", line 462, in handle_event return handler(cast(QKeyEvent, event)) File "/usr/lib/python3.9/site-packages/qutebrowser/keyinput/modeman.py", line 283, in _handle_keypress match = parser.handle(event, dry_run=dry_run) File "/usr/lib/python3.9/site-packages/qutebrowser/keyinput/modeparsers.py", line 105, in handle match = super().handle(e, dry_run=dry_run) File "/usr/lib/python3.9/site-packages/qutebrowser/keyinput/basekeyparser.py", line 309, in handle result = self._match_key_mapping(result.sequence) File "/usr/lib/python3.9/site-packages/qutebrowser/keyinput/basekeyparser.py", line 246, in _match_key_mapping mapped = sequence.with_mappings( File "/usr/lib/python3.9/site-packages/qutebrowser/keyinput/keyutils.py", line 675, in with_mappings assert len(new_seq) == 1 AssertionError While this isn't the intended way to use this setting, we shouldn't crash - and let's just make it work instead of forbidding it.
Diffstat (limited to 'qutebrowser/keyinput/keyutils.py')
-rw-r--r--qutebrowser/keyinput/keyutils.py7
1 files changed, 3 insertions, 4 deletions
diff --git a/qutebrowser/keyinput/keyutils.py b/qutebrowser/keyinput/keyutils.py
index 01a07d6a0..ddf818708 100644
--- a/qutebrowser/keyinput/keyutils.py
+++ b/qutebrowser/keyinput/keyutils.py
@@ -648,10 +648,9 @@ class KeySequence:
for key in self._iter_keys():
key_seq = KeySequence(key)
if key_seq in mappings:
- new_seq = mappings[key_seq]
- assert len(new_seq) == 1
- key = new_seq[0].to_int()
- keys.append(key)
+ keys += [info.to_int() for info in mappings[key_seq]]
+ else:
+ keys.append(key)
return self.__class__(*keys)
@classmethod