summaryrefslogtreecommitdiff
path: root/qutebrowser/keyinput/modeparsers.py
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2019-10-09 23:07:32 +0200
committerFlorian Bruhin <me@the-compiler.org>2019-10-09 23:07:32 +0200
commit36ac7f24704938d13ff84e7829dcfad7b64a3dd0 (patch)
treeb6955242ecce45aeaa6fd9264913f8c1d8328048 /qutebrowser/keyinput/modeparsers.py
parent4d7cbae5b205f7ae7b629641268f5c4560f579da (diff)
downloadqutebrowser-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.py23
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):