diff --git a/electrum/gui/qt/main_window.py b/electrum/gui/qt/main_window.py index 16952772c..f2d000b7a 100644 --- a/electrum/gui/qt/main_window.py +++ b/electrum/gui/qt/main_window.py @@ -1738,7 +1738,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger): coro = self.wallet.lnworker.pay_invoice(invoice.lightning_invoice, amount_msat=amount_msat) self.run_coroutine_from_thread(coro) - def run_swap_dialog(self, is_reverse=True, recv_amount_sat=None): + def run_swap_dialog(self, is_reverse=None, recv_amount_sat=None): if not self.network: self.window.show_error(_("You are offline.")) return diff --git a/electrum/gui/qt/swap_dialog.py b/electrum/gui/qt/swap_dialog.py index 3a875547f..5d680b68e 100644 --- a/electrum/gui/qt/swap_dialog.py +++ b/electrum/gui/qt/swap_dialog.py @@ -28,7 +28,7 @@ class SwapDialog(WindowModalDialog): tx: Optional[PartialTransaction] - def __init__(self, window: 'ElectrumWindow', is_reverse=True, recv_amount_sat=None): + def __init__(self, window: 'ElectrumWindow', is_reverse=None, recv_amount_sat=None): WindowModalDialog.__init__(self, window, _('Submarine Swap')) self.window = window self.config = window.config @@ -36,7 +36,7 @@ class SwapDialog(WindowModalDialog): self.swap_manager = self.lnworker.swap_manager self.network = window.network self.tx = None # for the forward-swap only - self.is_reverse = is_reverse + self.is_reverse = is_reverse if is_reverse is not None else True vbox = QVBoxLayout(self) self.description_label = WWLabel(self.get_description()) self.send_amount_e = BTCAmountEdit(self.window.get_decimal_point) @@ -45,6 +45,7 @@ class SwapDialog(WindowModalDialog): self.max_button.setFixedWidth(100) self.max_button.setCheckable(True) self.toggle_button = QPushButton(u'\U000021c4') + self.toggle_button.setEnabled(is_reverse is None) # send_follows is used to know whether the send amount field / receive # amount field should be adjusted after the fee slider was moved self.send_follows = False @@ -57,6 +58,9 @@ class SwapDialog(WindowModalDialog): # textEdited is triggered only for user editing of the fields self.send_amount_e.textEdited.connect(self.uncheck_max) self.recv_amount_e.textEdited.connect(self.uncheck_max) + self.send_amount_e.setEnabled(recv_amount_sat is None) + self.recv_amount_e.setEnabled(recv_amount_sat is None) + self.max_button.setEnabled(recv_amount_sat is None) fee_slider = FeeSlider(self.window, self.config, self.fee_slider_callback) fee_combo = FeeComboBox(fee_slider) fee_slider.update() @@ -227,6 +231,7 @@ class SwapDialog(WindowModalDialog): expected_onchain_amount_sat=onchain_amount + self.swap_manager.get_claim_fee(), ) self.window.run_coroutine_from_thread(coro) + return True else: lightning_amount = self.recv_amount_e.get_amount() onchain_amount = self.send_amount_e.get_amount() @@ -236,6 +241,7 @@ class SwapDialog(WindowModalDialog): if not self.window.question(CANNOT_RECEIVE_WARNING): return self.window.protect(self.do_normal_swap, (lightning_amount, onchain_amount)) + return True def update_tx(self): if self.is_reverse: