diff options
author | Jay Kamat <jaygkamat@gmail.com> | 2019-04-05 17:23:59 -0700 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2019-04-17 12:17:00 +0200 |
commit | 32a2647942409aba027ccdaf5e6ca0f87fd66c1a (patch) | |
tree | e9334899673c8f11d4521f1050a8ccc090ea34df | |
parent | 6adb610f97e77dfc78ed1e2126b1b45e097f311e (diff) | |
download | qutebrowser-32a2647942409aba027ccdaf5e6ca0f87fd66c1a.tar.gz qutebrowser-32a2647942409aba027ccdaf5e6ca0f87fd66c1a.zip |
Move _on_aborted to slot
-rw-r--r-- | qutebrowser/mainwindow/prompt.py | 22 | ||||
-rw-r--r-- | tests/end2end/features/downloads.feature | 9 |
2 files changed, 22 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.""" diff --git a/tests/end2end/features/downloads.feature b/tests/end2end/features/downloads.feature index b1d92145d..1ead5a839 100644 --- a/tests/end2end/features/downloads.feature +++ b/tests/end2end/features/downloads.feature @@ -92,6 +92,15 @@ Feature: Downloading things from a website. And I run :leave-mode Then no crash should happen + Scenario: Aborting a download in a different window (issue 3378) + When I set downloads.location.suggestion to filename + And I set downloads.location.prompt to true + And I open data/downloads/download.bin in a new window without waiting + And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='*' mode=<PromptMode.download: 5> *" in the log + And I run :window-only + And I run :leave-mode + Then no crash should happen + # https://github.com/qutebrowser/qutebrowser/issues/4240 @qt<5.11.2 Scenario: Downloading with SSL errors (issue 1413) |