diff options
Diffstat (limited to 'qutebrowser/utils/qtutils.py')
-rw-r--r-- | qutebrowser/utils/qtutils.py | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/qutebrowser/utils/qtutils.py b/qutebrowser/utils/qtutils.py index 3e8afae3f..109d2dfed 100644 --- a/qutebrowser/utils/qtutils.py +++ b/qutebrowser/utils/qtutils.py @@ -35,7 +35,7 @@ import typing import pkg_resources from PyQt5.QtCore import (qVersion, QEventLoop, QDataStream, QByteArray, - QIODevice, QSaveFile, QT_VERSION_STR, + QIODevice, QFileDevice, QSaveFile, QT_VERSION_STR, PYQT_VERSION_STR, QObject, QUrl) from PyQt5.QtGui import QColor from PyQt5.QtWidgets import QApplication @@ -44,9 +44,6 @@ try: except ImportError: # pragma: no cover qWebKitVersion = None # type: ignore[assignment] # noqa: N816 -if typing.TYPE_CHECKING: - from PyQt5.QtCore import QFileDevice - from qutebrowser.misc import objects from qutebrowser.utils import usertypes @@ -74,13 +71,17 @@ class QtOSError(OSError): if msg is None: msg = dev.errorString() + self.qt_errno = None # type: typing.Optional[QFileDevice.FileError] + if isinstance(dev, QFileDevice): + msg = self._init_filedev(dev, msg) + super().__init__(msg) - self.qt_errno = None # type: typing.Optional[QFileDevice.FileError] - try: - self.qt_errno = dev.error() - except AttributeError: - pass + def _init_filedev(self, dev: QFileDevice, msg: str) -> str: + self.qt_errno = dev.error() + filename = dev.fileName() + msg += ": {!r}".format(filename) + return msg def version_check(version: str, |