From 9b738c321b7ee0b5964e03f1d802c0412df9d46f Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Mon, 16 Jun 2014 09:18:28 +0200 Subject: [PATCH] don't notify when a finished download is removed. * Actually stop the download when the target file is deleted * Check the download state before sending a notification or changing the progress bar color. Fixes #10907. --- src/apps/webpositive/DownloadProgressView.cpp | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/apps/webpositive/DownloadProgressView.cpp b/src/apps/webpositive/DownloadProgressView.cpp index abce216998..cc1ff7bc61 100644 --- a/src/apps/webpositive/DownloadProgressView.cpp +++ b/src/apps/webpositive/DownloadProgressView.cpp @@ -427,6 +427,7 @@ DownloadProgressView::MessageReceived(BMessage* message) switch (opCode) { case B_ENTRY_REMOVED: fIconView->SetIconDimmed(true); + fDownload->Cancel(); DownloadCanceled(); break; case B_ENTRY_MOVED: @@ -641,6 +642,22 @@ DownloadProgressView::DownloadFinished() void DownloadProgressView::DownloadCanceled() { + // Show the cancel notification, and set the progress bar red, only if the + // download was still running. In cases where the file is deleted after + // the download was finished, we don't want these things to happen. + if (fDownload) + { + BNotification success(B_ERROR_NOTIFICATION); + success.SetTitle(B_TRANSLATE("Download aborted")); + success.SetContent(fPath.Leaf()); + // Don't make a click on the notification open the file: it is not + // complete + success.SetIcon(fIconView->Bitmap()); + success.Send(); + + fStatusBar->SetBarColor(ui_color(B_FAILURE_COLOR)); + } + fDownload = NULL; fTopButton->SetLabel(B_TRANSLATE("Restart")); fTopButton->SetMessage(new BMessage(RESTART_DOWNLOAD)); @@ -649,14 +666,6 @@ DownloadProgressView::DownloadCanceled() fBottomButton->SetMessage(new BMessage(REMOVE_DOWNLOAD)); fBottomButton->SetEnabled(true); fInfoView->SetText(""); - fStatusBar->SetBarColor(ui_color(B_FAILURE_COLOR)); - - BNotification success(B_ERROR_NOTIFICATION); - success.SetTitle(B_TRANSLATE("Download aborted")); - success.SetContent(fPath.Leaf()); - // Don't make a click on the notification open the file: it is not complete - success.SetIcon(fIconView->Bitmap()); - success.Send(); fPath.Unset(); }