aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-12-16 18:13:31 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2013-12-16 18:51:30 +0100
commit1ad26362c92c7d5678c24df85fd7b9ab1d3d34fe (patch)
tree7bc3446ccc10fe5c571b4b0bcbe148e715543c7d
parent93a7861d719ac8b4ec57cf89c3e2d423ba7f18e1 (diff)
downloadbitcoin-1ad26362c92c7d5678c24df85fd7b9ab1d3d34fe.tar.xz
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.cpp4
-rw-r--r--src/qt/bitcoingui.cpp7
-rw-r--r--src/ui_interface.h2
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,