From 6b1d2972bf9a40f97ba3a5c95831fd179b1054cf Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Fri, 2 Nov 2018 10:58:14 +0200 Subject: [PATCH] Remove obj_c for macOS Dock icon menu Qt `setAsDockMenu()` does this work. --- src/qt/bitcoingui.cpp | 4 +++- src/qt/macdockiconhandler.h | 11 ----------- src/qt/macdockiconhandler.mm | 25 +------------------------ 3 files changed, 4 insertions(+), 36 deletions(-) diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 8817f93b7..de7153722 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -607,7 +607,9 @@ void BitcoinGUI::createTrayIconMenu() // Note: On macOS, the Dock icon is used to provide the tray's functionality. MacDockIconHandler *dockIconHandler = MacDockIconHandler::instance(); connect(dockIconHandler, &MacDockIconHandler::dockIconClicked, this, &BitcoinGUI::macosDockIconActivated); - trayIconMenu = dockIconHandler->dockMenu(); + + trayIconMenu = new QMenu(this); + trayIconMenu->setAsDockMenu(); #endif // Configuration of the tray icon (or Dock icon) menu diff --git a/src/qt/macdockiconhandler.h b/src/qt/macdockiconhandler.h index ea77cdf05..ff867e21a 100644 --- a/src/qt/macdockiconhandler.h +++ b/src/qt/macdockiconhandler.h @@ -7,11 +7,6 @@ #include -QT_BEGIN_NAMESPACE -class QMenu; -class QWidget; -QT_END_NAMESPACE - /** macOS-specific Dock icon handler. */ class MacDockIconHandler : public QObject @@ -19,9 +14,6 @@ class MacDockIconHandler : public QObject Q_OBJECT public: - ~MacDockIconHandler(); - - QMenu *dockMenu(); static MacDockIconHandler *instance(); static void cleanup(); @@ -30,9 +22,6 @@ Q_SIGNALS: private: MacDockIconHandler(); - - QWidget *m_dummyWidget; - QMenu *m_dockMenu; }; #endif // BITCOIN_QT_MACDOCKICONHANDLER_H diff --git a/src/qt/macdockiconhandler.mm b/src/qt/macdockiconhandler.mm index a35661769..102adce6c 100644 --- a/src/qt/macdockiconhandler.mm +++ b/src/qt/macdockiconhandler.mm @@ -4,17 +4,13 @@ #include "macdockiconhandler.h" -#include -#include - #undef slots -#include #include #include static MacDockIconHandler *s_instance = nullptr; -bool dockClickHandler(id self,SEL _cmd,...) { +bool dockClickHandler(id self, SEL _cmd, ...) { Q_UNUSED(self) Q_UNUSED(_cmd) @@ -32,28 +28,9 @@ void setupDockClickHandler() { class_replaceMethod(delClass, shouldHandle, (IMP)dockClickHandler, "B@:"); } - MacDockIconHandler::MacDockIconHandler() : QObject() { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - setupDockClickHandler(); - this->m_dummyWidget = new QWidget(); - this->m_dockMenu = new QMenu(this->m_dummyWidget); -#if QT_VERSION >= 0x050200 - this->m_dockMenu->setAsDockMenu(); -#endif - [pool release]; -} - -MacDockIconHandler::~MacDockIconHandler() -{ - delete this->m_dummyWidget; -} - -QMenu *MacDockIconHandler::dockMenu() -{ - return this->m_dockMenu; } MacDockIconHandler *MacDockIconHandler::instance()