diff options
-rw-r--r-- | qutebrowser/browser/hints.py | 12 | ||||
-rw-r--r-- | qutebrowser/keyinput/modeman.py | 12 | ||||
-rw-r--r-- | qutebrowser/mainwindow/mainwindow.py | 1 |
3 files changed, 16 insertions, 9 deletions
diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py index 1c50f49ea..c122894b3 100644 --- a/qutebrowser/browser/hints.py +++ b/qutebrowser/browser/hints.py @@ -29,7 +29,7 @@ import enum from string import ascii_lowercase import attr -from PyQt5.QtCore import pyqtSlot, QObject, Qt, QUrl +from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, Qt, QUrl from PyQt5.QtWidgets import QLabel from qutebrowser.config import config, configexc @@ -369,7 +369,7 @@ class HintManager(QObject): _tab_id: The tab ID this HintManager is associated with. Signals: - See HintActions + set_text: Request for the statusbar to change its text. """ HINT_TEXTS = { @@ -391,6 +391,8 @@ class HintManager(QObject): Target.delete: "Delete an element", } + set_text = pyqtSignal(str) + def __init__(self, win_id: int, parent: QObject = None) -> None: """Constructor.""" super().__init__(parent) @@ -418,8 +420,7 @@ class HintManager(QObject): for label in self._context.all_labels: label.cleanup() - window = objreg.get('main-window', scope='window', window=self._win_id) - window.status.set_text('') + self.set_text.emit('') self._context = None @@ -651,8 +652,7 @@ class HintManager(QObject): modeman.enter(self._win_id, usertypes.KeyMode.hint, 'HintManager.start') - window = objreg.get('main-window', scope='window', window=self._win_id) - window.status.set_text(self._get_text()) + self.set_text.emit(self._get_text()) if self._context.first: self._fire(strings[0]) diff --git a/qutebrowser/keyinput/modeman.py b/qutebrowser/keyinput/modeman.py index 4febf98a8..e49aa891d 100644 --- a/qutebrowser/keyinput/modeman.py +++ b/qutebrowser/keyinput/modeman.py @@ -17,8 +17,9 @@ # You should have received a copy of the GNU General Public License # along with qutebrowser. If not, see <http://www.gnu.org/licenses/>. -"""Mode manager singleton which handles the current keyboard mode.""" +"""Mode manager (per window) which handles the current keyboard mode.""" +import typing import functools from typing import Mapping, Callable, MutableMapping, Union, Set, cast @@ -78,15 +79,17 @@ class UnavailableError(Exception): def init(win_id: int, parent: QObject) -> 'ModeManager': """Initialize the mode manager and the keyparsers for the given win_id.""" + commandrunner = runners.CommandRunner(win_id) + modeman = ModeManager(win_id, parent) objreg.register('mode-manager', modeman, scope='window', window=win_id) - commandrunner = runners.CommandRunner(win_id) - hintmanager = hints.HintManager(win_id, parent=parent) objreg.register('hintmanager', hintmanager, scope='window', window=win_id, command_only=True) + modeman.hintmanager = hintmanager + keyparsers = { usertypes.KeyMode.normal: modeparsers.NormalKeyParser( @@ -227,6 +230,7 @@ class ModeManager(QObject): Attributes: mode: The mode we're currently in. + hintmanager: The HintManager associated with this window. _win_id: The window ID of this ModeManager _prev_mode: Mode before a prompt popped up parsers: A dictionary of modes and their keyparsers. @@ -260,6 +264,8 @@ class ModeManager(QObject): self._prev_mode = usertypes.KeyMode.normal self.mode = usertypes.KeyMode.normal self._releaseevents_to_pass = set() # type: Set[KeyEvent] + # Set after __init__ + self.hintmanager = typing.cast(hints.HintManager, None) def __repr__(self) -> str: return utils.get_repr(self, mode=self.mode) diff --git a/qutebrowser/mainwindow/mainwindow.py b/qutebrowser/mainwindow/mainwindow.py index c17c99b2a..34d99c312 100644 --- a/qutebrowser/mainwindow/mainwindow.py +++ b/qutebrowser/mainwindow/mainwindow.py @@ -486,6 +486,7 @@ class MainWindow(QWidget): mode_manager.entered.connect(hints.on_mode_entered) # status bar + mode_manager.hintmanager.set_text.connect(self.status.set_text) mode_manager.entered.connect(self.status.on_mode_entered) mode_manager.left.connect(self.status.on_mode_left) mode_manager.left.connect(self.status.cmd.on_mode_left) |