diff options
Diffstat (limited to 'qutebrowser/mainwindow/prompt.py')
-rw-r--r-- | qutebrowser/mainwindow/prompt.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/qutebrowser/mainwindow/prompt.py b/qutebrowser/mainwindow/prompt.py index 166e3f283..d7d34a0cf 100644 --- a/qutebrowser/mainwindow/prompt.py +++ b/qutebrowser/mainwindow/prompt.py @@ -22,6 +22,7 @@ import os.path import html import collections +import functools import attr from PyQt5.QtCore import (pyqtSlot, pyqtSignal, Qt, QTimer, QDir, QModelIndex, @@ -329,16 +330,10 @@ class PromptContainer(QWidget): log.prompt.debug("Displaying prompt {}".format(prompt)) self._prompt = prompt + # If this question was interrupted, we already connected the signal if not question.interrupted: - # If this question was interrupted, we already connected the signal - def on_aborted(): - try: - modeman.leave(self._win_id, prompt.KEY_MODE, - 'aborted', maybe=True) - except objreg.RegistryUnavailableError: - # window was deleted: ignore - pass - question.aborted.connect(on_aborted) + question.aborted.connect( + functools.partial(self._on_aborted, prompt.KEY_MODE)) modeman.enter(self._win_id, prompt.KEY_MODE, 'question asked') self.setSizePolicy(prompt.sizePolicy()) @@ -348,6 +343,15 @@ class PromptContainer(QWidget): prompt.setFocus() self.update_geometry.emit() + @pyqtSlot() + def _on_aborted(self, key_mode): + """Leave KEY_MODE whenever a prompt is aborted.""" + try: + modeman.leave(self._win_id, key_mode, 'aborted', maybe=True) + except objreg.RegistryUnavailableError: + # window was deleted: ignore + pass + @pyqtSlot(usertypes.KeyMode) def _on_prompt_done(self, key_mode): """Leave the prompt mode in this window if a question was answered.""" |