diff options
author | Florian Bruhin <me@the-compiler.org> | 2019-11-24 22:44:05 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2019-11-24 22:44:19 +0100 |
commit | 62274cee4fc0d77c492a3e1e0d1f75ea8b08f988 (patch) | |
tree | c996b3b707c2dc632ac873b7f1ff2fe22effb06b /qutebrowser/keyinput/modeman.py | |
parent | 42a42ffbe708d81c602730efacbdfd6fecbbd543 (diff) | |
download | qutebrowser-62274cee4fc0d77c492a3e1e0d1f75ea8b08f988.tar.gz qutebrowser-62274cee4fc0d77c492a3e1e0d1f75ea8b08f988.zip |
Remove keyparsers from objreg
This gets rid of an exception/abort when tests are finished with the new PyQt
exit scheme.
See #5017, #640
Diffstat (limited to 'qutebrowser/keyinput/modeman.py')
-rw-r--r-- | qutebrowser/keyinput/modeman.py | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/qutebrowser/keyinput/modeman.py b/qutebrowser/keyinput/modeman.py index 9e50481c7..7b5c8a786 100644 --- a/qutebrowser/keyinput/modeman.py +++ b/qutebrowser/keyinput/modeman.py @@ -37,7 +37,7 @@ from qutebrowser.browser import hints INPUT_MODES = [usertypes.KeyMode.insert, usertypes.KeyMode.passthrough] PROMPT_MODES = [usertypes.KeyMode.prompt, usertypes.KeyMode.yesno] -_ParserDictType = typing.MutableMapping[ +ParserDictType = typing.MutableMapping[ usertypes.KeyMode, basekeyparser.BaseKeyParser] @@ -161,13 +161,7 @@ def init(win_id: int, parent: QObject) -> 'ModeManager': mode=usertypes.KeyMode.run_macro, commandrunner=commandrunner, parent=modeman), - } # type: _ParserDictType - - objreg.register('keyparsers', keyparsers, scope='window', window=win_id) - - modeman.destroyed.connect( # type: ignore - functools.partial(objreg.delete, 'keyparsers', scope='window', - window=win_id)) + } # type: ParserDictType for mode, parser in keyparsers.items(): modeman.register(mode, parser) @@ -204,7 +198,7 @@ class ModeManager(QObject): mode: The mode we're currently in. _win_id: The window ID of this ModeManager _prev_mode: Mode before a prompt popped up - _parsers: A dictionary of modes and their keyparsers. + parsers: A dictionary of modes and their keyparsers. _forward_unbound_keys: If we should forward unbound keys. _releaseevents_to_pass: A set of KeyEvents where the keyPressEvent was passed through, so the release event should as @@ -226,7 +220,7 @@ class ModeManager(QObject): def __init__(self, win_id: int, parent: QObject = None) -> None: super().__init__(parent) self._win_id = win_id - self._parsers = {} # type: _ParserDictType + self.parsers = {} # type: _ParserDictType self._prev_mode = usertypes.KeyMode.normal self.mode = usertypes.KeyMode.normal self._releaseevents_to_pass = set() # type: typing.Set[KeyEvent] @@ -246,7 +240,7 @@ class ModeManager(QObject): True if event should be filtered, False otherwise. """ curmode = self.mode - parser = self._parsers[curmode] + parser = self.parsers[curmode] if curmode != usertypes.KeyMode.insert: log.modes.debug("got keypress in mode {} - delegating to " "{}".format(curmode, utils.qualname(parser))) @@ -303,7 +297,7 @@ class ModeManager(QObject): parser: basekeyparser.BaseKeyParser) -> None: """Register a new mode.""" assert parser is not None - self._parsers[mode] = parser + self.parsers[mode] = parser parser.request_leave.connect(self.leave) def enter(self, mode: usertypes.KeyMode, @@ -322,7 +316,7 @@ class ModeManager(QObject): log.modes.debug("Entering mode {}{}".format( mode, '' if reason is None else ' (reason: {})'.format(reason))) - if mode not in self._parsers: + if mode not in self.parsers: raise ValueError("No keyparser for mode {}".format(mode)) if self.mode == mode or (self.mode in PROMPT_MODES and mode in PROMPT_MODES): @@ -429,4 +423,4 @@ class ModeManager(QObject): @cmdutils.register(instance='mode-manager', scope='window') def clear_keychain(self) -> None: """Clear the currently entered key chain.""" - self._parsers[self.mode].clear_keystring() + self.parsers[self.mode].clear_keystring() |