From: MASM fan Date: Tue, 10 Feb 2015 20:02:00 +0000 (-0800) Subject: Save and restore fWalletUnlockMintonly flag X-Git-Tag: nvc-v0.5.3~106 X-Git-Url: https://git.novaco.in/?p=novacoin.git;a=commitdiff_plain;h=56e46b89aac57a230e343181b464b9d59e494e5d Save and restore fWalletUnlockMintonly flag Fixes issue #145 --- diff --git a/src/qt/walletmodel.cpp b/src/qt/walletmodel.cpp index 0d8b0ab..2f2ccab 100644 --- a/src/qt/walletmodel.cpp +++ b/src/qt/walletmodel.cpp @@ -410,12 +410,12 @@ void WalletModel::unsubscribeFromCoreSignals() WalletModel::UnlockContext WalletModel::requestUnlock() { bool was_locked = getEncryptionStatus() == Locked; + bool mintflag = fWalletUnlockMintOnly; if ((!was_locked) && fWalletUnlockMintOnly) { - setWalletLocked(true); - was_locked = getEncryptionStatus() == Locked; - + setWalletLocked(true); + was_locked = getEncryptionStatus() == Locked; } if(was_locked) { @@ -425,13 +425,14 @@ WalletModel::UnlockContext WalletModel::requestUnlock() // If wallet is still locked, unlock was failed or cancelled, mark context as invalid bool valid = getEncryptionStatus() != Locked; - return UnlockContext(this, valid, was_locked && !fWalletUnlockMintOnly); + return UnlockContext(this, valid, was_locked, mintflag); } -WalletModel::UnlockContext::UnlockContext(WalletModel *wallet, bool valid, bool relock): +WalletModel::UnlockContext::UnlockContext(WalletModel *wallet, bool valid, bool relock, bool mintflag): wallet(wallet), valid(valid), - relock(relock) + relock(relock), + mintflag(mintflag) { } @@ -439,7 +440,14 @@ WalletModel::UnlockContext::~UnlockContext() { if(valid && relock) { + if (mintflag) + { + // Restore unlock minting flag + fWalletUnlockMintOnly = mintflag; + return; + } wallet->setWalletLocked(true); + } } @@ -452,7 +460,7 @@ void WalletModel::UnlockContext::CopyFrom(const UnlockContext& rhs) bool WalletModel::getPubKey(const CKeyID &address, CPubKey& vchPubKeyOut) const { - return wallet->GetPubKey(address, vchPubKeyOut); + return wallet->GetPubKey(address, vchPubKeyOut); } // returns a list of COutputs from COutPoints diff --git a/src/qt/walletmodel.h b/src/qt/walletmodel.h index f00ce70..e0e1163 100644 --- a/src/qt/walletmodel.h +++ b/src/qt/walletmodel.h @@ -110,7 +110,7 @@ public: class UnlockContext { public: - UnlockContext(WalletModel *wallet, bool valid, bool relock); + UnlockContext(WalletModel *wallet, bool valid, bool relock, bool mintflag); ~UnlockContext(); bool isValid() const { return valid; } @@ -122,6 +122,7 @@ public: WalletModel *wallet; bool valid; mutable bool relock; // mutable, as it can be set to false by copying + bool mintflag; void CopyFrom(const UnlockContext& rhs); };