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'))