URI: 
       talways display a receiving address (fix #2031) - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit a8c23f9bf08a206904c7d1892ad1bf583660e6ad
   DIR parent 0f424a9da4fbfba11d20fbe465f75661893093e9
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Wed,  4 Jan 2017 19:09:14 +0100
       
       always display a receiving address (fix #2031)
       
       Diffstat:
         M gui/kivy/uix/screens.py             |       9 ++++++---
         M gui/qt/main_window.py               |       4 ++--
         M gui/text.py                         |       2 +-
         M lib/wallet.py                       |      12 ++++++++++++
       
       4 files changed, 21 insertions(+), 6 deletions(-)
       ---
   DIR diff --git a/gui/kivy/uix/screens.py b/gui/kivy/uix/screens.py
       t@@ -330,12 +330,15 @@ class ReceiveScreen(CScreen):
            def get_new_address(self):
                if not self.app.wallet:
                    return False
       +        self.clear()
                addr = self.app.wallet.get_unused_address()
                if addr is None:
       -            return False
       -        self.clear()
       +            addr = self.app.wallet.get_receiving_address()
       +            b = False
       +        else:
       +            b = True
                self.screen.address = addr
       -        return True
       +        return b
        
            def on_address(self, addr):
                req = self.app.wallet.get_payment_request(addr, self.app.electrum_config)
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -877,8 +877,8 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
                self.receive_amount_e.setAmount(None)
        
            def clear_receive_tab(self):
       -        addr = self.wallet.get_unused_address()
       -        self.receive_address_e.setText(addr if addr else '')
       +        addr = self.wallet.get_receiving_address()
       +        self.receive_address_e.setText(addr)
                self.receive_message_e.setText('')
                self.receive_amount_e.setAmount(None)
                self.expires_label.hide()
   DIR diff --git a/gui/text.py b/gui/text.py
       t@@ -146,7 +146,7 @@ class ElectrumGui:
                self.stdscr.addstr(self.maxy -1, self.maxx-30, ' '.join([_("Settings"), _("Network"), _("Quit")]))
        
            def print_receive(self):
       -        addr = self.wallet.get_unused_address()
       +        addr = self.wallet.get_receiving_address()
                self.stdscr.addstr(2, 1, "Address: "+addr)
                self.print_qr(addr)
        
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -1119,6 +1119,18 @@ class Abstract_Wallet(PrintError):
                if addrs:
                    return addrs[0]
        
       +    def get_receiving_address(self):
       +        # always return an address
       +        domain = self.get_receiving_addresses()
       +        choice = domain[0]
       +        for addr in domain:
       +            if addr not in self.history.keys():
       +                if addr not in self.receive_requests.keys():
       +                    return addr
       +                else:
       +                    choice = addr
       +        return choice
       +
            def get_payment_status(self, address, amount):
                local_height = self.get_local_height()
                received, sent = self.get_addr_io(address)