diff --git a/qutebrowser/keyinput/basekeyparser.py b/qutebrowser/keyinput/basekeyparser.py index de4c71cbb..f5d573cf8 100644 --- a/qutebrowser/keyinput/basekeyparser.py +++ b/qutebrowser/keyinput/basekeyparser.py @@ -192,8 +192,7 @@ class BaseKeyParser(QObject): passthrough: bool = False, supports_count: bool = True, allow_partial_timeout: bool = False, - allow_forward: bool = True, - forward_widget_name: str = None) -> None: + allow_forward: bool = True) -> None: super().__init__(parent) self._win_id = win_id self._pure_sequence = keyutils.KeySequence() @@ -206,7 +205,7 @@ class BaseKeyParser(QObject): self._supports_count = supports_count self.allow_partial_timeout = allow_partial_timeout self.allow_forward = allow_forward - self.forward_widget_name = forward_widget_name + self.forward_widget_name = None self.bindings = BindingTrie() self._read_config() config.instance.changed.connect(self._on_config_changed) @@ -230,6 +229,17 @@ class BaseKeyParser(QObject): self._mode.name) log.keyboard.debug(prefix + msg) + def set_forward_widget_name(self, + forward_widget_name: str) -> 'BaseKeyParser': + """Set forward_widget_name. + + Args: + forward_widget_name: Name of the widget to which partial keys are + forwarded. + """ + self.forward_widget_name = forward_widget_name + return self + def get_do_log(self) -> bool: return self._do_log diff --git a/qutebrowser/keyinput/modeman.py b/qutebrowser/keyinput/modeman.py index 6071288e5..4c71d5f1c 100644 --- a/qutebrowser/keyinput/modeman.py +++ b/qutebrowser/keyinput/modeman.py @@ -103,8 +103,8 @@ def init(win_id: int, parent: QObject) -> 'ModeManager': do_log=log_sensitive_keys, supports_count=False, allow_partial_timeout=True, - allow_forward=True, - forward_widget_name='status-command'), + allow_forward=True) + .set_forward_widget_name('status-command'), usertypes.KeyMode.prompt: modeparsers.CommandKeyParser( @@ -118,8 +118,8 @@ def init(win_id: int, parent: QObject) -> 'ModeManager': # Maybe in the future implement this, but for the time being its # infeasible as 'prompt-container' is registered as command-only. # Plus, I imagine the use case for such a thing is quite rare. + # (The forward_widget_name would be 'prompt-container') allow_forward=False, - forward_widget_name=None, # 'prompt-container' allow_partial_timeout=False), usertypes.KeyMode.yesno: @@ -131,7 +131,6 @@ def init(win_id: int, parent: QObject) -> 'ModeManager': supports_count=False, # Similar story to prompt mode allow_forward=False, - forward_widget_name=None, allow_partial_timeout=False), usertypes.KeyMode.caret: diff --git a/qutebrowser/keyinput/modeparsers.py b/qutebrowser/keyinput/modeparsers.py index 6cc787ce4..f2ab9fb0f 100644 --- a/qutebrowser/keyinput/modeparsers.py +++ b/qutebrowser/keyinput/modeparsers.py @@ -54,14 +54,12 @@ class CommandKeyParser(basekeyparser.BaseKeyParser): passthrough: bool = False, supports_count: bool = True, allow_partial_timeout: bool = True, - allow_forward: bool = True, - forward_widget_name: str = None) -> None: + allow_forward: bool = True) -> None: super().__init__(mode=mode, win_id=win_id, parent=parent, do_log=do_log, passthrough=passthrough, supports_count=supports_count, allow_partial_timeout=allow_partial_timeout, - allow_forward=allow_forward, - forward_widget_name=forward_widget_name) + allow_forward=allow_forward) self._commandrunner = commandrunner def execute(self, cmdstr: str, count: int = None) -> None: diff --git a/tests/unit/keyinput/test_modeman.py b/tests/unit/keyinput/test_modeman.py index 4d50c67c7..7a762ac41 100644 --- a/tests/unit/keyinput/test_modeman.py +++ b/tests/unit/keyinput/test_modeman.py @@ -182,11 +182,9 @@ def modeman_with_basekeyparser(mode_manager, config_stub): } config_stub.val.bindings.key_mappings = {} mode = usertypes.KeyMode.normal - mode_manager.register(mode, - basekeyparser.BaseKeyParser(mode=mode, - win_id=0, - passthrough=True, - forward_widget_name='fake-event-filter')) + kp = basekeyparser.BaseKeyParser(mode=mode, win_id=0, passthrough=True) + kp.set_forward_widget_name('fake-event-filter') + mode_manager.register(mode, kp) yield mode_manager objreg.delete('fake-event-filter', scope='window', window=0)