URI: 
       tsubmarine swaps: fix fee rounding and fee slider behavior - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 608d8981193ae5f68a3b3b750bd1de9312c5add8
   DIR parent 6b36c59ab062ea01fcdc67194c9e6aeb5c504038
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Mon, 25 May 2020 15:58:33 +0200
       
       submarine swaps: fix fee rounding and fee slider behavior
       
       Diffstat:
         M electrum/gui/qt/swap_dialog.py      |      19 ++++++++++++++-----
       
       1 file changed, 14 insertions(+), 5 deletions(-)
       ---
   DIR diff --git a/electrum/gui/qt/swap_dialog.py b/electrum/gui/qt/swap_dialog.py
       t@@ -41,6 +41,7 @@ class SwapDialog(WindowModalDialog):
                self.recv_amount_e = BTCAmountEdit(self.window.get_decimal_point)
                self.send_button = QPushButton('')
                self.recv_button = QPushButton('')
       +        self.send_follows = False
                self.is_reverse = True
                self.send_amount_e.follows = False
                self.recv_amount_e.follows = False
       t@@ -87,8 +88,10 @@ class SwapDialog(WindowModalDialog):
                    self.config.set_key('fee_per_kb', fee_rate, False)
                # read claim_fee from config
                self.claim_fee = self.swap_manager.get_tx_fee()
       -        self.on_send_edited()
       -        #self.on_recv_edited()
       +        if self.send_follows:
       +            self.on_recv_edited()
       +        else:
       +            self.on_send_edited()
                self.update()
        
            def toggle_direction(self):
       t@@ -100,23 +103,28 @@ class SwapDialog(WindowModalDialog):
            def on_send_edited(self):
                if self.send_amount_e.follows:
                    return
       +        self.send_amount_e.setStyleSheet(ColorScheme.DEFAULT.as_stylesheet())
                amount = self.send_amount_e.get_amount()
                self.recv_amount_e.follows = True
                self.recv_amount_e.setAmount(self.get_recv_amount(amount))
       +        self.recv_amount_e.setStyleSheet(ColorScheme.BLUE.as_stylesheet())
                self.recv_amount_e.follows = False
       +        self.send_follows = False
        
            def on_recv_edited(self):
                if self.recv_amount_e.follows:
                    return
       +        self.recv_amount_e.setStyleSheet(ColorScheme.DEFAULT.as_stylesheet())
                amount = self.recv_amount_e.get_amount()
                self.send_amount_e.follows = True
                self.send_amount_e.setAmount(self.get_send_amount(amount))
       +        self.send_amount_e.setStyleSheet(ColorScheme.BLUE.as_stylesheet())
                self.send_amount_e.follows = False
       +        self.send_follows = True
        
            def get_pairs(self):
                fut = asyncio.run_coroutine_threadsafe(self.swap_manager.get_pairs(), self.network.asyncio_loop)
                pairs = fut.result()
       -        print(pairs)
                fees = pairs['pairs']['BTC/BTC']['fees']
                self.percentage = fees['percentage']
                self.normal_fee = fees['minerFees']['baseAsset']['normal']
       t@@ -147,7 +155,7 @@ class SwapDialog(WindowModalDialog):
                    return
                if send_amount < self.min_amount or send_amount > self.max_amount:
                    return
       -        x = send_amount * (100 - self.percentage) / 100
       +        x = int(send_amount * (100 - self.percentage) / 100)
                if self.is_reverse:
                    x -= self.lockup_fee
                    x -= self.claim_fee
       t@@ -160,12 +168,13 @@ class SwapDialog(WindowModalDialog):
            def get_send_amount(self, recv_amount):
                if not recv_amount:
                    return
       -        x = recv_amount * (100 + self.percentage) / 100
       +        x = recv_amount
                if self.is_reverse:
                    x += self.lockup_fee
                    x += self.claim_fee
                else:
                    x += self.normal_fee
       +        x = int(x * 100 / (100 - self.percentage)) + 1
                return x
        
            def run(self):