URI: 
       tA different approach to d5aa646 - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit f7b39f49524b8f907783e82533d1196f3c232a79
   DIR parent 58fe42cea2c7aae9d42fd14a01dcc896c6c8882c
  HTML Author: Neil Booth <kyuupichan@gmail.com>
       Date:   Tue, 12 Jan 2016 20:19:21 +0900
       
       A different approach to d5aa646
       
       Only clean up the MainWindow once.
       
       Diffstat:
         M gui/qt/__init__.py                  |       7 ++-----
         M gui/qt/main_window.py               |      16 ++++++++++++----
       
       2 files changed, 14 insertions(+), 9 deletions(-)
       ---
   DIR diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py
       t@@ -163,16 +163,13 @@ class ElectrumGui:
                return w
        
            def close_window(self, window):
       -        # It seems that in some cases this can be called before the
       -        # window is added to the windows list...
       -        if window in self.windows:
       -            self.windows.remove(window)
       -            run_hook('on_close_window', window)
       +        self.windows.remove(window)
                self.build_tray_menu()
                # save wallet path of last open window
                if self.config.get('wallet_path') is None and not self.windows:
                    path = window.wallet.storage.path
                    self.config.set_key('gui_last_wallet', path)
       +        run_hook('on_close_window', window)
        
            def main(self):
                self.timer.start()
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -113,6 +113,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
                self.contacts = gui_object.contacts
                self.tray = gui_object.tray
                self.app = gui_object.app
       +        self.cleaned_up = False
        
                self.create_status_bar()
                self.need_update = threading.Event()
       t@@ -2818,19 +2819,26 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
                NetworkDialog(self.wallet.network, self.config, self).do_exec()
        
            def closeEvent(self, event):
       +        # It seems in some rare cases this closeEvent() is called twice
       +        if not self.cleaned_up:
       +            self.cleaned_up = True
       +            self.clean_up()
       +        event.accept()
       +
       +    def clean_up(self):
                if self.network:
                    self.network.unregister_callback(self.on_network)
                self.config.set_key("is_maximized", self.isMaximized())
                if not self.isMaximized():
                    g = self.geometry()
       -            self.wallet.storage.put("winpos-qt", [g.left(),g.top(),g.width(),g.height()])
       -        self.config.set_key("console-history", self.console.history[-50:], True)
       +            self.wallet.storage.put("winpos-qt", [g.left(),g.top(),
       +                                                  g.width(),g.height()])
       +        self.config.set_key("console-history", self.console.history[-50:],
       +                            True)
                if self.qr_window:
                    self.qr_window.close()
                self.close_wallet()
                self.gui_object.close_window(self)
       -        event.accept()
       -
        
            def plugins_dialog(self):
                self.pluginsdialog = d = WindowModalDialog(self, _('Electrum Plugins'))