From 9c6782be1d9ca70598ab43142fa9d697e9ebe935 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Thu, 6 Aug 2015 20:57:40 +0200 Subject: [PATCH] downloads: Fix size calculation with unknown size. Fixes #854. --- CHANGELOG.asciidoc | 1 + qutebrowser/browser/downloads.py | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index ddead5959..08cd555cf 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -59,6 +59,7 @@ Fixed - Fixed potential crash when hinting a text field. - Fixed entering of insert mode when certain disabled text fields were clicked. - Fixed a crash when using `:set` with `-p` and `!` (invert value) +- Downloads with unknown size are now handled correctly. Removed ~~~~~~~ diff --git a/qutebrowser/browser/downloads.py b/qutebrowser/browser/downloads.py index 6b0223424..b6bf651ed 100644 --- a/qutebrowser/browser/downloads.py +++ b/qutebrowser/browser/downloads.py @@ -121,6 +121,10 @@ class DownloadItemStats(QObject): The caller needs to guarantee this is called all REFRESH_INTERVAL ms. """ + if self.done is None: + # this can happen for very fast downloads, e.g. when actually + # opening a file + return delta = self.done - self._last_done self.speed = delta * 1000 / REFRESH_INTERVAL self._speed_avg.append(self.speed) @@ -132,7 +136,9 @@ class DownloadItemStats(QObject): def percentage(self): """The current download percentage, or None if unknown.""" - if self.total == 0 or self.total is None: + if self.done == self.total: + return 100 + elif self.total == 0 or self.total is None: return None else: return 100 * self.done / self.total