diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index 09bfafe93..ecb2dec81 100644 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -202,15 +202,29 @@ void SendCoinsDialog::on_sendButton_clicked() fNewRecipientAllowed = false; - - WalletModel::UnlockContext ctx(model->requestUnlock(true)); - if(!ctx.isValid()) + // request unlock only if was locked or unlocked for mixing: + // this way we let users unlock by walletpassphrase or by menu + // and make many transactions while unlocking through this dialog + // will call relock + WalletModel::EncryptionStatus encStatus = model->getEncryptionStatus(); + if(encStatus == model->Locked || encStatus == model->UnlockedForAnonymizationOnly) { - // Unlock wallet was cancelled - fNewRecipientAllowed = true; + WalletModel::UnlockContext ctx(model->requestUnlock(true)); + if(!ctx.isValid()) + { + // Unlock wallet was cancelled + fNewRecipientAllowed = true; + return; + } + send(recipients, strFee, formatted); return; } + // already unlocked or not encrypted at all + send(recipients, strFee, formatted); +} +void SendCoinsDialog::send(QList recipients, QString strFee, QStringList formatted) +{ // prepare transaction for getting txFee earlier WalletModelTransaction currentTransaction(recipients); WalletModel::SendCoinsReturn prepareStatus; diff --git a/src/qt/sendcoinsdialog.h b/src/qt/sendcoinsdialog.h index 486f25592..5df779567 100644 --- a/src/qt/sendcoinsdialog.h +++ b/src/qt/sendcoinsdialog.h @@ -53,6 +53,7 @@ private: Ui::SendCoinsDialog *ui; WalletModel *model; bool fNewRecipientAllowed; + void send(QList recipients, QString strFee, QStringList formatted); // Process WalletModel::SendCoinsReturn and generate a pair consisting // of a message and message flags for use in emit message().