From fa4badc0fd4179daec9932ca031de83632a1f6fb Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Thu, 9 Apr 2026 21:09:30 +0200 Subject: [PATCH] refactor: Make ThreadSafeMessageBox signal void The message will always return false (a constant) and the return value is never used. Also, annotate ThreadSafeMessageBox in the GUI code as [[nodiscard]], because it may actually return a value, which is handled for questions (but not for messages). --- src/interfaces/node.h | 3 +-- src/node/interface_ui.cpp | 4 ++-- src/node/interface_ui.h | 2 +- src/noui.cpp | 9 ++++----- src/noui.h | 2 +- src/qt/bitcoingui.cpp | 4 ++-- 6 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/interfaces/node.h b/src/interfaces/node.h index ad6298e621f..8b8402ece16 100644 --- a/src/interfaces/node.h +++ b/src/interfaces/node.h @@ -219,8 +219,7 @@ public: virtual std::unique_ptr handleInitMessage(InitMessageFn fn) = 0; //! Register handler for message box messages. - using MessageBoxFn = - std::function; + using MessageBoxFn = std::function; virtual std::unique_ptr handleMessageBox(MessageBoxFn fn) = 0; //! Register handler for question messages. diff --git a/src/node/interface_ui.cpp b/src/node/interface_ui.cpp index 6b1fe72fae4..54b267c80b0 100644 --- a/src/node/interface_ui.cpp +++ b/src/node/interface_ui.cpp @@ -13,7 +13,7 @@ using util::MakeUnorderedList; CClientUIInterface uiInterface; struct UISignals { - btcsignals::signal> ThreadSafeMessageBox; + btcsignals::signal ThreadSafeMessageBox; btcsignals::signal> ThreadSafeQuestion; btcsignals::signal InitMessage; btcsignals::signal InitWallet; @@ -45,7 +45,7 @@ ADD_SIGNALS_IMPL_WRAPPER(NotifyBlockTip); ADD_SIGNALS_IMPL_WRAPPER(NotifyHeaderTip); ADD_SIGNALS_IMPL_WRAPPER(BannedListChanged); -bool CClientUIInterface::ThreadSafeMessageBox(const bilingual_str& message, unsigned int style) { return g_ui_signals.ThreadSafeMessageBox(message, style).value_or(false);} +void CClientUIInterface::ThreadSafeMessageBox(const bilingual_str& message, unsigned int style) { return g_ui_signals.ThreadSafeMessageBox(message, style); } bool CClientUIInterface::ThreadSafeQuestion(const bilingual_str& message, const std::string& non_interactive_message, unsigned int style) { return g_ui_signals.ThreadSafeQuestion(message, non_interactive_message, style).value_or(false);} void CClientUIInterface::InitMessage(const std::string& message) { return g_ui_signals.InitMessage(message); } void CClientUIInterface::InitWallet() { return g_ui_signals.InitWallet(); } diff --git a/src/node/interface_ui.h b/src/node/interface_ui.h index 8175683f9fa..47e3da2c2c4 100644 --- a/src/node/interface_ui.h +++ b/src/node/interface_ui.h @@ -72,7 +72,7 @@ public: btcsignals::connection signal_name##_connect(std::function fn) /** Show message box. */ - ADD_SIGNALS_DECL_WRAPPER(ThreadSafeMessageBox, bool, const bilingual_str& message, unsigned int style); + ADD_SIGNALS_DECL_WRAPPER(ThreadSafeMessageBox, void, const bilingual_str& message, unsigned int style); /** If possible, ask the user a question. If not, falls back to ThreadSafeMessageBox(noninteractive_message, style) and returns false. */ ADD_SIGNALS_DECL_WRAPPER(ThreadSafeQuestion, bool, const bilingual_str& message, const std::string& noninteractive_message, unsigned int style); diff --git a/src/noui.cpp b/src/noui.cpp index 12ebc401c7f..ee61a0991d6 100644 --- a/src/noui.cpp +++ b/src/noui.cpp @@ -17,7 +17,7 @@ btcsignals::connection noui_ThreadSafeMessageBoxConn; btcsignals::connection noui_ThreadSafeQuestionConn; btcsignals::connection noui_InitMessageConn; -bool noui_ThreadSafeMessageBox(const bilingual_str& message, unsigned int style) +void noui_ThreadSafeMessageBox(const bilingual_str& message, unsigned int style) { bool fSecure = style & CClientUIInterface::SECURE; style &= ~CClientUIInterface::SECURE; @@ -41,12 +41,12 @@ bool noui_ThreadSafeMessageBox(const bilingual_str& message, unsigned int style) } tfm::format(std::cerr, "%s%s\n", strCaption, message.original); - return false; } bool noui_ThreadSafeQuestion(const bilingual_str& /* ignored interactive message */, const std::string& message, unsigned int style) { - return noui_ThreadSafeMessageBox(Untranslated(message), style); + noui_ThreadSafeMessageBox(Untranslated(message), style); + return false; // Answer the question with false in the noui context } void noui_InitMessage(const std::string& message) @@ -61,10 +61,9 @@ void noui_connect() noui_InitMessageConn = uiInterface.InitMessage_connect(noui_InitMessage); } -bool noui_ThreadSafeMessageBoxRedirect(const bilingual_str& message, unsigned int style) +void noui_ThreadSafeMessageBoxRedirect(const bilingual_str& message, unsigned int style) { LogInfo("%s", message.original); - return false; } bool noui_ThreadSafeQuestionRedirect(const bilingual_str& /* ignored interactive message */, const std::string& message, unsigned int style) diff --git a/src/noui.h b/src/noui.h index 332346f51ef..71f284bde8e 100644 --- a/src/noui.h +++ b/src/noui.h @@ -10,7 +10,7 @@ struct bilingual_str; /** Non-GUI handler, which logs and prints messages. */ -bool noui_ThreadSafeMessageBox(const bilingual_str& message, unsigned int style); +void noui_ThreadSafeMessageBox(const bilingual_str& message, unsigned int style); /** Non-GUI handler, which logs and prints questions. */ bool noui_ThreadSafeQuestion(const bilingual_str& /* ignored interactive message */, const std::string& message, unsigned int style); /** Non-GUI handler, which only logs a message. */ diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 96ea3f4a706..9d3f7ad639f 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -1589,7 +1589,7 @@ void BitcoinGUI::showModalOverlay() modalOverlay->toggleVisibility(); } -static bool ThreadSafeMessageBox(BitcoinGUI* gui, const bilingual_str& message, unsigned int style) +[[nodiscard]] static bool ThreadSafeMessageBox(BitcoinGUI* gui, const bilingual_str& message, unsigned int style) { bool modal = (style & CClientUIInterface::MODAL); // The SECURE flag has no effect in the Qt GUI. @@ -1621,7 +1621,7 @@ void BitcoinGUI::subscribeToCoreSignals() { // Connect signals to client m_handler_message_box = m_node.handleMessageBox([this](const bilingual_str& message, unsigned int style) { - return ThreadSafeMessageBox(this, message, style); + (void)ThreadSafeMessageBox(this, message, style); }); m_handler_question = m_node.handleQuestion([this](const bilingual_str& message, const std::string& /*non_interactive_message*/, unsigned int style) { return ThreadSafeMessageBox(this, message, style);