reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit 4d4e7b88152760c76fd7941932e5f9865be7d4d0
parent 49c8a5c272c9db4a59fa7c14adebdde520298889
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Mon,  7 Dec 2015 22:12:04 -0500

don't display errors when the user cancels a transaction

Diffstat:
Msrc/progress.cpp | 7++++++-
Msrc/reapack.cpp | 8+++++++-
Msrc/transaction.cpp | 3++-
Msrc/transaction.hpp | 4++--
4 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/progress.cpp b/src/progress.cpp @@ -44,7 +44,12 @@ void Progress::onCommand(WPARAM wParam, LPARAM) switch(commandId) { case IDCANCEL: - m_transaction->cancel(); + if(m_transaction) + m_transaction->cancel(); + + // don't wait until the current downloads are finished + // before getting out of the user way + hide(); break; } } diff --git a/src/reapack.cpp b/src/reapack.cpp @@ -138,6 +138,9 @@ Transaction *ReaPack::createTransaction() }); m_transaction->onFinish([=] { + if(m_transaction->isCancelled()) + return; + m_progress->setEnabled(false); if(m_transaction->packages().empty()) @@ -146,8 +149,11 @@ Transaction *ReaPack::createTransaction() Dialog::Show<Report>(m_instance, m_mainWindow, m_transaction); m_progress->setEnabled(true); - m_progress->setTransaction(nullptr); m_progress->hide(); + }); + + m_transaction->onFinish([=] { + m_progress->setTransaction(nullptr); delete m_transaction; m_transaction = nullptr; diff --git a/src/transaction.cpp b/src/transaction.cpp @@ -9,7 +9,7 @@ using namespace std; Transaction::Transaction(Registry *reg, const Path &root) - : m_registry(reg), m_root(root), m_new(0), m_updates(0) + : m_registry(reg), m_root(root), m_isCancelled(false) { m_dbPath = m_root + "ReaPack"; RecursiveCreateDirectory(m_dbPath.join().c_str(), 0); @@ -102,6 +102,7 @@ void Transaction::run() void Transaction::cancel() { + m_isCancelled = true; m_queue.abort(); } diff --git a/src/transaction.hpp b/src/transaction.hpp @@ -33,12 +33,11 @@ public: void fetch(const RemoteMap &); void fetch(const Remote &); - void run(); void cancel(); + bool isCancelled() const { return m_isCancelled; } DownloadQueue *downloadQueue() { return &m_queue; } - const PackageEntryList &packages() const { return m_packages; } const PackageEntryList &newPackages() const { return m_new; } const PackageEntryList &updates() const { return m_updates; } @@ -56,6 +55,7 @@ private: Path m_root; Path m_dbPath; + bool m_isCancelled; DatabaseList m_databases; DownloadQueue m_queue;