URI: 
       tMerge pull request #3626 from SomberNight/qt_quit_after_last_window - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit deb5a262dae0a5759a6fe40e13d990b62cf409d2
   DIR parent 6ccd4b78008ae81ed39a9591721679ba446e4883
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Sat, 30 Dec 2017 16:50:15 +0100
       
       Merge pull request #3626 from SomberNight/qt_quit_after_last_window
       
       fix #3217: make sure qt quits
       Diffstat:
         M gui/qt/__init__.py                  |      25 +++++++++++++++++++------
       
       1 file changed, 19 insertions(+), 6 deletions(-)
       ---
   DIR diff --git a/gui/qt/__init__.py b/gui/qt/__init__.py
       t@@ -240,6 +240,7 @@ class ElectrumGui:
                except GoBack:
                    return
                except:
       +            import traceback
                    traceback.print_exc(file=sys.stdout)
                    return
                self.timer.start()
       t@@ -248,11 +249,23 @@ class ElectrumGui:
                if not self.start_new_window(path, self.config.get('url')):
                    return
                signal.signal(signal.SIGINT, lambda *args: self.app.quit())
       +
       +        def quit_after_last_window():
       +            # on some platforms, not only does exec_ not return but not even
       +            # aboutToQuit is emitted (but following this, it should be emitted)
       +            if self.app.quitOnLastWindowClosed():
       +                self.app.quit()
       +        self.app.lastWindowClosed.connect(quit_after_last_window)
       +
       +        def clean_up():
       +            # Shut down the timer cleanly
       +            self.timer.stop()
       +            # clipboard persistence. see http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg17328.html
       +            event = QtCore.QEvent(QtCore.QEvent.Clipboard)
       +            self.app.sendEvent(self.app.clipboard(), event)
       +            self.tray.hide()
       +        self.app.aboutToQuit.connect(clean_up)
       +
                # main loop
                self.app.exec_()
       -        # Shut down the timer cleanly
       -        self.timer.stop()
       -        # clipboard persistence. see http://www.mail-archive.com/pyqt@riverbankcomputing.com/msg17328.html
       -        event = QtCore.QEvent(QtCore.QEvent.Clipboard)
       -        self.app.sendEvent(self.app.clipboard(), event)
       -        self.tray.hide()
       +        # on some platforms the exec_ call may not return, so use clean_up()