Here is a proposed fix for this case, including some related cleanups (feel free to grab any part of it):
diff --git a/src/qt/macdockiconhandler.mm b/src/qt/macdockiconhandler.mm
index b7b1b98eef..1b62032c1e 100644
--- a/src/qt/macdockiconhandler.mm
+++ b/src/qt/macdockiconhandler.mm
@@ -20,7 +20,8 @@ bool dockClickHandler(id self, SEL _cmd, ...) {
}
void setupDockClickHandler() {
- Class delClass = (Class)[[[NSApplication sharedApplication] delegate] class];
+ if (NSApp == nil) return;
+ Class delClass = (Class)[[NSApp delegate] class];
SEL shouldHandle = sel_registerName("applicationShouldHandleReopen:hasVisibleWindows:");
class_replaceMethod(delClass, shouldHandle, (IMP)dockClickHandler, "B@:");
}
@@ -49,5 +50,6 @@ void setupDockClickHandler() {
*/
void ForceActivation()
{
- [[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
+ if (NSApp == nil) return;
+ [NSApp activateIgnoringOtherApps:YES];
}
diff --git a/src/qt/test/addressbooktests.cpp b/src/qt/test/addressbooktests.cpp
index 58b8a6d2ea..fae94ef0f7 100644
--- a/src/qt/test/addressbooktests.cpp
+++ b/src/qt/test/addressbooktests.cpp
@@ -212,16 +212,5 @@ void TestAddAddressesToSendBook(interfaces::Node& node)
void AddressBookTests::addressBookTests()
{
-#ifdef Q_OS_MACOS
- if (QApplication::platformName() == "minimal") {
- // Disable for mac on "minimal" platform to avoid crashes inside the Qt
- // framework when it tries to look up unimplemented cocoa functions,
- // and fails to handle returned nulls
- // (https://bugreports.qt.io/browse/QTBUG-49686).
- qWarning() << "Skipping AddressBookTests on mac build with 'minimal' platform set due to Qt bugs. To run AppTests, invoke "
- "with 'QT_QPA_PLATFORM=cocoa test_bitcoin-qt' on mac, or else use a linux or windows build.";
- return;
- }
-#endif
TestAddAddressesToSendBook(m_node);
}
diff --git a/src/qt/test/apptests.cpp b/src/qt/test/apptests.cpp
index 752c877381..7802696d5f 100644
--- a/src/qt/test/apptests.cpp
+++ b/src/qt/test/apptests.cpp
@@ -54,18 +54,6 @@ void TestRpcCommand(RPCConsole* console)
//! Entry point for BitcoinApplication tests.
void AppTests::appTests()
{
-#ifdef Q_OS_MACOS
- if (QApplication::platformName() == "minimal") {
- // Disable for mac on "minimal" platform to avoid crashes inside the Qt
- // framework when it tries to look up unimplemented cocoa functions,
- // and fails to handle returned nulls
- // (https://bugreports.qt.io/browse/QTBUG-49686).
- qWarning() << "Skipping AppTests on mac build with 'minimal' platform set due to Qt bugs. To run AppTests, invoke "
- "with 'QT_QPA_PLATFORM=cocoa test_bitcoin-qt' on mac, or else use a linux or windows build.";
- return;
- }
-#endif
-
qRegisterMetaType<interfaces::BlockAndHeaderTipInfo>("interfaces::BlockAndHeaderTipInfo");
m_app.parameterSetup();
QVERIFY(m_app.createOptionsModel(/*resetSettings=*/true));
diff --git a/src/qt/test/wallettests.cpp b/src/qt/test/wallettests.cpp
index a2983c2397..af620b6738 100644
--- a/src/qt/test/wallettests.cpp
+++ b/src/qt/test/wallettests.cpp
@@ -455,16 +455,5 @@ void TestGUI(interfaces::Node& node)
void WalletTests::walletTests()
{
-#ifdef Q_OS_MACOS
- if (QApplication::platformName() == "minimal") {
- // Disable for mac on "minimal" platform to avoid crashes inside the Qt
- // framework when it tries to look up unimplemented cocoa functions,
- // and fails to handle returned nulls
- // (https://bugreports.qt.io/browse/QTBUG-49686).
- qWarning() << "Skipping WalletTests on mac build with 'minimal' platform set due to Qt bugs. To run AppTests, invoke "
- "with 'QT_QPA_PLATFORM=cocoa test_bitcoin-qt' on mac, or else use a linux or windows build.";
- return;
- }
-#endif
TestGUI(m_node);
}