diff options
author | Jason Rosenzweig <mail4jasonr@gmail.com> | 2021-07-13 18:56:20 +0800 |
---|---|---|
committer | Jason Rosenzweig <mail4jasonr@gmail.com> | 2021-07-13 18:56:20 +0800 |
commit | f2cc3fa731047472eacc6818bba1885e62e356f0 (patch) | |
tree | 9bde8390dd48ff75396129722e4d9775388d36eb | |
parent | cc8e67962bae163eac80fe20e753aa90491bc6da (diff) | |
download | qutebrowser-f2cc3fa731047472eacc6818bba1885e62e356f0.tar.gz qutebrowser-f2cc3fa731047472eacc6818bba1885e62e356f0.zip |
Initial commit of fix for issue 6549
-rw-r--r-- | misc/requirements/requirements-pyinstaller.txt | 2 | ||||
-rw-r--r-- | qutebrowser/browser/downloads.py | 3 | ||||
-rw-r--r-- | qutebrowser/browser/webengine/webenginedownloads.py | 19 |
3 files changed, 19 insertions, 5 deletions
diff --git a/misc/requirements/requirements-pyinstaller.txt b/misc/requirements/requirements-pyinstaller.txt index 86d73655d..4aa157bad 100644 --- a/misc/requirements/requirements-pyinstaller.txt +++ b/misc/requirements/requirements-pyinstaller.txt @@ -1,5 +1,5 @@ # This file is automatically generated by scripts/dev/recompile_requirements.py altgraph==0.17 -pyinstaller==4.3 +pyinstaller==4.4 pyinstaller-hooks-contrib==2021.2 diff --git a/qutebrowser/browser/downloads.py b/qutebrowser/browser/downloads.py index fa4ac9da2..e09c8122b 100644 --- a/qutebrowser/browser/downloads.py +++ b/qutebrowser/browser/downloads.py @@ -184,6 +184,9 @@ def get_filename_question(*, suggested_filename, url, parent=None): """ suggested_filename = utils.sanitize_filename(suggested_filename) + if url.toDisplayString()[:7] == "file://": + return "FILE" + q = usertypes.Question(parent) q.title = "Save file to:" q.text = "Please enter a location for <b>{}</b>".format( diff --git a/qutebrowser/browser/webengine/webenginedownloads.py b/qutebrowser/browser/webengine/webenginedownloads.py index 0ec9d551c..5915439bb 100644 --- a/qutebrowser/browser/webengine/webenginedownloads.py +++ b/qutebrowser/browser/webengine/webenginedownloads.py @@ -22,6 +22,8 @@ import re import os.path import functools +import platform +import subprocess from PyQt5.QtCore import pyqtSlot, Qt, QUrl, QObject from PyQt5.QtWebEngineWidgets import QWebEngineDownloadItem @@ -34,7 +36,8 @@ from qutebrowser.utils import (debug, usertypes, message, log, objreg, urlutils, class DownloadItem(downloads.AbstractDownloadItem): """A wrapper over a QWebEngineDownloadItem. - + if self.url().toDisplayString()[:6] == "file://": + qt_item.cancel() Attributes: _qt_item: The wrapped item. """ @@ -296,9 +299,17 @@ class DownloadManager(downloads.AbstractDownloadManager): question = downloads.get_filename_question( suggested_filename=suggested_filename, url=qt_item.url(), parent=self) - self._init_filename_question(question, download) - - message.global_bridge.ask(question, blocking=True) + if question == "FILE": + if platform.system() == "Linux": + subprocess.call(["xdg-open", qt_item.url().toDisplayString()]) + elif platform.system() == 'Darwin': + subprocess.call(["open", qt_item.url().toDisplayString()]) + elif platform.system() == 'Windows': + subprocess.call(["start", qt_item.url().toDisplayString()]) + qt_item.cancel() + else: + self._init_filename_question(question, download) + message.global_bridge.ask(question, blocking=True) # The filename is set via the question.answered signal, connected in # _init_filename_question. |