summaryrefslogtreecommitdiff
path: root/qutebrowser/mainwindow/prompt.py
diff options
context:
space:
mode:
Diffstat (limited to 'qutebrowser/mainwindow/prompt.py')
-rw-r--r--qutebrowser/mainwindow/prompt.py22
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."""