Remove obj_c for macOS Dock icon menu
Qt `setAsDockMenu()` does this work.
This commit is contained in:
parent
2464925e7b
commit
6b1d2972bf
3 changed files with 4 additions and 36 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in a new issue