diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-12-16 18:13:31 +0100 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2013-12-16 18:51:30 +0100 |
commit | 1ad26362c92c7d5678c24df85fd7b9ab1d3d34fe (patch) | |
tree | 7bc3446ccc10fe5c571b4b0bcbe148e715543c7d | |
parent | 93a7861d719ac8b4ec57cf89c3e2d423ba7f18e1 (diff) |
qt: Prevent non-functional GUI from popping up during Init
When a InitError or InitWarning happens, the
GUI pops up but is unusable (until Init finishes).
This is caused by showNormalIfMinimized. Add a message
flag to skip this call for Init errors or warnings.
-rw-r--r-- | src/init.cpp | 4 | ||||
-rw-r--r-- | src/qt/bitcoingui.cpp | 7 | ||||
-rw-r--r-- | src/ui_interface.h | 2 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/init.cpp b/src/init.cpp index 40dd2d04cd..d6026aa3fe 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -164,13 +164,13 @@ void HandleSIGHUP(int) bool static InitError(const std::string &str) { - uiInterface.ThreadSafeMessageBox(str, "", CClientUIInterface::MSG_ERROR); + uiInterface.ThreadSafeMessageBox(str, "", CClientUIInterface::MSG_ERROR | CClientUIInterface::NOSHOWGUI); return false; } bool static InitWarning(const std::string &str) { - uiInterface.ThreadSafeMessageBox(str, "", CClientUIInterface::MSG_WARNING); + uiInterface.ThreadSafeMessageBox(str, "", CClientUIInterface::MSG_WARNING | CClientUIInterface::NOSHOWGUI); return true; } diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 5ffd3f8987..048ac070ad 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -681,8 +681,11 @@ void BitcoinGUI::message(const QString &title, const QString &message, unsigned if (!(buttons = (QMessageBox::StandardButton)(style & CClientUIInterface::BTN_MASK))) buttons = QMessageBox::Ok; - // Ensure we get users attention - showNormalIfMinimized(); + // Ensure we get users attention, but only if main window is visible + // as we don't want to pop up the main window for messages that happen before + // initialization is finished. + if(!(style & CClientUIInterface::NOSHOWGUI)) + showNormalIfMinimized(); QMessageBox mBox((QMessageBox::Icon)nMBoxIcon, strTitle, message, buttons, this); int r = mBox.exec(); if (ret != NULL) diff --git a/src/ui_interface.h b/src/ui_interface.h index 2378d5dfbb..83341af96c 100644 --- a/src/ui_interface.h +++ b/src/ui_interface.h @@ -62,6 +62,8 @@ public: /** Force blocking, modal message box dialog (not just OS notification) */ MODAL = 0x10000000U, + /** Don't bring GUI to foreground. Use for messages during initialization */ + NOSHOWGUI = 0x20000000U, /** Predefined combinations for certain default usage cases */ MSG_INFORMATION = ICON_INFORMATION, |