diff options
author | Florian Bruhin <me@the-compiler.org> | 2019-10-09 23:07:32 +0200 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2019-10-09 23:07:32 +0200 |
commit | 36ac7f24704938d13ff84e7829dcfad7b64a3dd0 (patch) | |
tree | b6955242ecce45aeaa6fd9264913f8c1d8328048 /qutebrowser/keyinput/modeparsers.py | |
parent | 4d7cbae5b205f7ae7b629641268f5c4560f579da (diff) | |
download | qutebrowser-36ac7f24704938d13ff84e7829dcfad7b64a3dd0.tar.gz qutebrowser-36ac7f24704938d13ff84e7829dcfad7b64a3dd0.zip |
Move HintManager from a per-tab to a per-window object
This means we use objreg less and we have less HintManager objects - what's
there not to like?
Diffstat (limited to 'qutebrowser/keyinput/modeparsers.py')
-rw-r--r-- | qutebrowser/keyinput/modeparsers.py | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/qutebrowser/keyinput/modeparsers.py b/qutebrowser/keyinput/modeparsers.py index cb7412d6c..e4366bcb5 100644 --- a/qutebrowser/keyinput/modeparsers.py +++ b/qutebrowser/keyinput/modeparsers.py @@ -30,6 +30,7 @@ import enum from PyQt5.QtCore import pyqtSlot, Qt, QObject from PyQt5.QtGui import QKeySequence, QKeyEvent +from qutebrowser.browser import hints from qutebrowser.commands import runners, cmdexc from qutebrowser.config import config from qutebrowser.keyinput import basekeyparser, keyutils @@ -182,6 +183,7 @@ class HintKeyParser(CommandKeyParser): Attributes: _filtertext: The text to filter with. + _hintmanager: The HintManager to use. _last_press: The nature of the last keypress, a LastPress member. """ @@ -189,19 +191,19 @@ class HintKeyParser(CommandKeyParser): def __init__(self, win_id: int, commandrunner: runners.CommandRunner, + hintmanager: hints.HintManager, parent: QObject = None) -> None: super().__init__(win_id, commandrunner, parent) + self._hintmanager = hintmanager self._filtertext = '' self._last_press = LastPress.none self._read_config('hint') - self.keystring_updated.connect(self.on_keystring_updated) + self.keystring_updated.connect(self._hintmanager.handle_partial_key) def _handle_filter_key(self, e: QKeyEvent) -> QKeySequence.SequenceMatch: """Handle keys for string filtering.""" log.keyboard.debug("Got filter key 0x{:x} text {}".format( e.key(), e.text())) - hintmanager = objreg.get('hintmanager', scope='tab', - window=self._win_id, tab='current') if e.key() == Qt.Key_Backspace: log.keyboard.debug("Got backspace, mode {}, filtertext '{}', " "sequence '{}'".format(self._last_press, @@ -209,7 +211,7 @@ class HintKeyParser(CommandKeyParser): self._sequence)) if self._last_press != LastPress.keystring and self._filtertext: self._filtertext = self._filtertext[:-1] - hintmanager.filter_hints(self._filtertext) + self._hintmanager.filter_hints(self._filtertext) return QKeySequence.ExactMatch elif self._last_press == LastPress.keystring and self._sequence: self._sequence = self._sequence[:-1] @@ -217,18 +219,18 @@ class HintKeyParser(CommandKeyParser): if not self._sequence and self._filtertext: # Switch back to hint filtering mode (this can happen only # in numeric mode after the number has been deleted). - hintmanager.filter_hints(self._filtertext) + self._hintmanager.filter_hints(self._filtertext) self._last_press = LastPress.filtertext return QKeySequence.ExactMatch else: return QKeySequence.NoMatch - elif hintmanager.current_mode() != 'number': + elif self._hintmanager.current_mode() != 'number': return QKeySequence.NoMatch elif not e.text(): return QKeySequence.NoMatch else: self._filtertext += e.text() - hintmanager.filter_hints(self._filtertext) + self._hintmanager.filter_hints(self._filtertext) self._last_press = LastPress.filtertext return QKeySequence.ExactMatch @@ -272,13 +274,6 @@ class HintKeyParser(CommandKeyParser): if not preserve_filter: self._filtertext = '' - @pyqtSlot(str) - def on_keystring_updated(self, keystr: str) -> None: - """Update hintmanager when the keystring was updated.""" - hintmanager = objreg.get('hintmanager', scope='tab', - window=self._win_id, tab='current') - hintmanager.handle_partial_key(keystr) - class CaretKeyParser(CommandKeyParser): |