aboutsummaryrefslogtreecommitdiff
path: root/src/qt/bitcoin.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2012-03-24 18:48:18 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2012-04-04 09:35:01 +0200
commit98e61758744ed34e8b7f59b37edb6d09b33d5517 (patch)
tree0eed63fc85d0dbcc851a1fbce8cdcb16b3b5b72c /src/qt/bitcoin.cpp
parent7e7bcce2d992c6fd53fdc4d9eb40f21c951d5347 (diff)
downloadbitcoin-98e61758744ed34e8b7f59b37edb6d09b33d5517.tar.xz
Update UI through async calls MainFrameRepaint and AddressBookRepaint instead of a timer.
- Overall, this is better design - This fixes problems with the address book UI not updating when the address book is changed through RPC - Move Statusbar change detection responsibility to ClientModel
Diffstat (limited to 'src/qt/bitcoin.cpp')
-rw-r--r--src/qt/bitcoin.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index 0f7c96e6a8..f330feedbc 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -33,8 +33,10 @@ Q_IMPORT_PLUGIN(qtaccessiblewidgets)
#endif
// Need a global reference for the notifications to find the GUI
-BitcoinGUI *guiref;
-QSplashScreen *splashref;
+static BitcoinGUI *guiref;
+static QSplashScreen *splashref;
+static WalletModel *walletmodel;
+static ClientModel *clientmodel;
int MyMessageBox(const std::string& message, const std::string& caption, int style, wxWindow* parent, int x, int y)
{
@@ -98,8 +100,16 @@ void UIThreadCall(boost::function0<void> fn)
void MainFrameRepaint()
{
- if(guiref)
- QMetaObject::invokeMethod(guiref, "refreshStatusBar", Qt::QueuedConnection);
+ if(clientmodel)
+ QMetaObject::invokeMethod(clientmodel, "update", Qt::QueuedConnection);
+ if(walletmodel)
+ QMetaObject::invokeMethod(walletmodel, "update", Qt::QueuedConnection);
+}
+
+void AddressBookRepaint()
+{
+ if(walletmodel)
+ QMetaObject::invokeMethod(walletmodel, "updateAddressList", Qt::QueuedConnection);
}
void InitMessage(const std::string &message)
@@ -230,7 +240,9 @@ int main(int argc, char *argv[])
splash.finish(&window);
ClientModel clientModel(&optionsModel);
+ clientmodel = &clientModel;
WalletModel walletModel(pwalletMain, &optionsModel);
+ walletmodel = &walletModel;
guiref = &window;
window.setClientModel(&clientModel);
@@ -270,6 +282,8 @@ int main(int argc, char *argv[])
app.exec();
guiref = 0;
+ clientmodel = 0;
+ walletmodel = 0;
}
Shutdown(NULL);
}