Skip to content

Commit 6b1d297

Browse files
committed
Remove obj_c for macOS Dock icon menu
Qt `setAsDockMenu()` does this work.
1 parent 2464925 commit 6b1d297

File tree

3 files changed

+4
-36
lines changed

3 files changed

+4
-36
lines changed

src/qt/bitcoingui.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,9 @@ void BitcoinGUI::createTrayIconMenu()
607607
// Note: On macOS, the Dock icon is used to provide the tray's functionality.
608608
MacDockIconHandler *dockIconHandler = MacDockIconHandler::instance();
609609
connect(dockIconHandler, &MacDockIconHandler::dockIconClicked, this, &BitcoinGUI::macosDockIconActivated);
610-
trayIconMenu = dockIconHandler->dockMenu();
610+
611+
trayIconMenu = new QMenu(this);
612+
trayIconMenu->setAsDockMenu();
611613
#endif
612614

613615
// Configuration of the tray icon (or Dock icon) menu

src/qt/macdockiconhandler.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,13 @@
77

88
#include <QObject>
99

10-
QT_BEGIN_NAMESPACE
11-
class QMenu;
12-
class QWidget;
13-
QT_END_NAMESPACE
14-
1510
/** macOS-specific Dock icon handler.
1611
*/
1712
class MacDockIconHandler : public QObject
1813
{
1914
Q_OBJECT
2015

2116
public:
22-
~MacDockIconHandler();
23-
24-
QMenu *dockMenu();
2517
static MacDockIconHandler *instance();
2618
static void cleanup();
2719

@@ -30,9 +22,6 @@ class MacDockIconHandler : public QObject
3022

3123
private:
3224
MacDockIconHandler();
33-
34-
QWidget *m_dummyWidget;
35-
QMenu *m_dockMenu;
3625
};
3726

3827
#endif // BITCOIN_QT_MACDOCKICONHANDLER_H

src/qt/macdockiconhandler.mm

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,13 @@
44

55
#include "macdockiconhandler.h"
66

7-
#include <QMenu>
8-
#include <QWidget>
9-
107
#undef slots
11-
#include <Cocoa/Cocoa.h>
128
#include <objc/objc.h>
139
#include <objc/message.h>
1410

1511
static MacDockIconHandler *s_instance = nullptr;
1612

17-
bool dockClickHandler(id self,SEL _cmd,...) {
13+
bool dockClickHandler(id self, SEL _cmd, ...) {
1814
Q_UNUSED(self)
1915
Q_UNUSED(_cmd)
2016

@@ -32,28 +28,9 @@ void setupDockClickHandler() {
3228
class_replaceMethod(delClass, shouldHandle, (IMP)dockClickHandler, "B@:");
3329
}
3430

35-
3631
MacDockIconHandler::MacDockIconHandler() : QObject()
3732
{
38-
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
39-
4033
setupDockClickHandler();
41-
this->m_dummyWidget = new QWidget();
42-
this->m_dockMenu = new QMenu(this->m_dummyWidget);
43-
#if QT_VERSION >= 0x050200
44-
this->m_dockMenu->setAsDockMenu();
45-
#endif
46-
[pool release];
47-
}
48-
49-
MacDockIconHandler::~MacDockIconHandler()
50-
{
51-
delete this->m_dummyWidget;
52-
}
53-
54-
QMenu *MacDockIconHandler::dockMenu()
55-
{
56-
return this->m_dockMenu;
5734
}
5835

5936
MacDockIconHandler *MacDockIconHandler::instance()

0 commit comments

Comments
 (0)