diff --git a/desktop/src/main/java/bisq/desktop/main/overlays/windows/DisputeSummaryWindow.java b/desktop/src/main/java/bisq/desktop/main/overlays/windows/DisputeSummaryWindow.java index f6d323cc36f..1a5d258b981 100644 --- a/desktop/src/main/java/bisq/desktop/main/overlays/windows/DisputeSummaryWindow.java +++ b/desktop/src/main/java/bisq/desktop/main/overlays/windows/DisputeSummaryWindow.java @@ -132,6 +132,7 @@ public class DisputeSummaryWindow extends Overlay { private ChangeListener tradeAmountToggleGroupListener; private ChangeListener compensationOrPenaltyListener; private boolean updatingUi = false; + private Popup payoutPromptOnDisplay = null; /////////////////////////////////////////////////////////////////////////////////////////// // Public API @@ -711,7 +712,10 @@ private void showPayoutTxConfirmation(Contract contract, DisputeResult disputeRe .closeButtonText(Res.get("shared.cancel")) .show(); } - + if (payoutPromptOnDisplay != null) { + log.warn("The payout prompt is already on display, we do not show another copy of it."); + return; + } Coin buyerPayoutAmount = disputeResult.getBuyerPayoutAmount(); String buyerPayoutAddressString = contract.getBuyerPayoutAddressString(); Coin sellerPayoutAmount = disputeResult.getSellerPayoutAmount(); @@ -736,8 +740,8 @@ private void showPayoutTxConfirmation(Contract contract, DisputeResult disputeRe sellerPayoutAddressString); } if (outputAmount.isPositive()) { - new Popup().width(900) - .headLine(Res.get("disputeSummaryWindow.close.txDetails.headline")) + payoutPromptOnDisplay = new Popup().width(900); + payoutPromptOnDisplay.headLine(Res.get("disputeSummaryWindow.close.txDetails.headline")) .confirmation(Res.get("disputeSummaryWindow.close.txDetails", formatter.formatCoinWithCode(inputAmount), buyerDetails, @@ -747,6 +751,7 @@ private void showPayoutTxConfirmation(Contract contract, DisputeResult disputeRe vkb)) .actionButtonText(Res.get("shared.yes")) .onAction(() -> { + payoutPromptOnDisplay = null; doPayout(buyerPayoutAmount, sellerPayoutAmount, fee, @@ -755,6 +760,9 @@ private void showPayoutTxConfirmation(Contract contract, DisputeResult disputeRe resultHandler); }) .closeButtonText(Res.get("shared.cancel")) + .onClose(() -> { + payoutPromptOnDisplay = null; + }) .show(); } else { // No payout will be made