tqt tx dialog: small fee edit fix - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 66ddedb97ea2eef37cb9355de35e5ad534013373 DIR parent 8bd27851a47707e2c4a039c7675f01e66fbfb939 HTML Author: SomberNight <somber.night@protonmail.com> Date: Tue, 19 Nov 2019 19:29:10 +0100 qt tx dialog: small fee edit fix scenario: enter extremely high feerate (which we cannot satisfy) then click into fee_edit. At that moment, fee_edit is empty and both feerate_edit and fee_edit are considered frozen. As fee_edit has priority, we would construct a tx with default fee. Now, instead, we won't construct this default fee tx ~as if the click to fee_edit did not happen. Diffstat: M electrum/gui/qt/amountedit.py | 3 ++- M electrum/gui/qt/transaction_dialog… | 4 ++-- M electrum/util.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) --- DIR diff --git a/electrum/gui/qt/amountedit.py b/electrum/gui/qt/amountedit.py t@@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from decimal import Decimal +from typing import Union from PyQt5.QtCore import pyqtSignal, Qt from PyQt5.QtGui import QPalette, QPainter t@@ -71,7 +72,7 @@ class AmountEdit(MyLineEdit): painter.setPen(self.help_palette.brush(QPalette.Disabled, QPalette.Text).color()) painter.drawText(textRect, Qt.AlignRight | Qt.AlignVCenter, self.base_unit()) - def get_amount(self): + def get_amount(self) -> Union[None, Decimal, int]: try: return (int if self.is_int else Decimal)(str(self.text())) except: DIR diff --git a/electrum/gui/qt/transaction_dialog.py b/electrum/gui/qt/transaction_dialog.py t@@ -693,9 +693,9 @@ class PreviewTxDialog(BaseTxDialog, TxEditor): .format(num_satoshis_added)) def get_fee_estimator(self): - if self.is_send_fee_frozen(): + if self.is_send_fee_frozen() and self.fee_e.get_amount() is not None: fee_estimator = self.fee_e.get_amount() - elif self.is_send_feerate_frozen(): + elif self.is_send_feerate_frozen() and self.feerate_e.get_amount() is not None: amount = self.feerate_e.get_amount() # sat/byte feerate amount = 0 if amount is None else amount * 1000 # sat/kilobyte feerate fee_estimator = partial( DIR diff --git a/electrum/util.py b/electrum/util.py t@@ -642,7 +642,7 @@ def format_fee_satoshis(fee, *, num_zeros=0, precision=None): return format_satoshis(fee, num_zeros=num_zeros, decimal_point=0, precision=precision) -def quantize_feerate(fee): +def quantize_feerate(fee) -> Union[None, Decimal, int]: """Strip sat/byte fee rate of excess precision.""" if fee is None: return None