URI: 
       tbugfix for "QObject: Cannot create children for a parent that is in a different thread." - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 9c0bb13366bad67da4c5beb8d2c50d8eb4f702f0
   DIR parent d825578099e257d7b778ad1ebb4902fcf47249ac
  HTML Author: Amir Taaki <genjix@riseup.net>
       Date:   Fri, 29 Jun 2012 02:33:21 +0200
       
       bugfix for "QObject: Cannot create children for a parent that is in a different thread."
       
       Diffstat:
         M lib/gui_lite.py                     |      20 +++++++++++++-------
       
       1 file changed, 13 insertions(+), 7 deletions(-)
       ---
   DIR diff --git a/lib/gui_lite.py b/lib/gui_lite.py
       t@@ -50,10 +50,6 @@ class MiniWindow(QDialog):
                expand_button.setObjectName("expand_button")
        
                self.balance_label = BalanceLabel()
       -        # WTF?!
       -        # TODO: Fix this!
       -        import time
       -        time.sleep(0.1)
                self.balance_label.setObjectName("balance_label")
        
                copy_button = QPushButton(_("&Copy Address"))
       t@@ -252,7 +248,7 @@ class MiniActuator:
            def is_valid(self, address):
                return self.wallet.is_valid(address)
        
       -class MiniDriver:
       +class MiniDriver(QObject):
        
            INITIALIZING = 0
            CONNECTING = 1
       t@@ -260,13 +256,23 @@ class MiniDriver:
            READY = 3
        
            def __init__(self, wallet, window):
       +        super(QObject, self).__init__()
       +
                self.wallet = wallet
                self.window = window
        
       -        self.wallet.gui_callback = self.update
       +        self.wallet.gui_callback = self.update_callback
        
                self.state = None
       -        self.update()
       +
       +        self.initializing()
       +        self.connect(self, SIGNAL("updatesignal"), self.update)
       +
       +    # This is a hack to workaround that Qt does not like changing the
       +    # window properties from this other thread before the runloop has
       +    # been called from.
       +    def update_callback(self):
       +        self.emit(SIGNAL("updatesignal"))
        
            def update(self):
                if not self.wallet.interface: