Remove obj_c for macOS Dock icon menu

Qt `setAsDockMenu()` does this work.

Github-Pull: #14597
Rebased-From: 6b1d2972bf
This commit is contained in:
Hennadii Stepanov 2018-11-02 10:58:14 +02:00 committed by João Barbosa
parent 90347141bd
commit 0c2fb87dc1
3 changed files with 4 additions and 36 deletions

View file

@ -598,7 +598,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

View file

@ -7,11 +7,6 @@
#include <QObject>
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

View file

@ -4,17 +4,13 @@
#include "macdockiconhandler.h"
#include <QMenu>
#include <QWidget>
#undef slots
#include <Cocoa/Cocoa.h>
#include <objc/objc.h>
#include <objc/message.h>
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()