Use Qt signal for macOS Dock icon click event

This moves the Dock icon click reaction code to the common place and
allows some cleanup in obj_c code.

According to the Apple's docs `class_replaceMethod` behaves as
`class_addMethod`, if the method identified by name does not yet exist;
or as `method_setImplementation`, if it does exist.
This commit is contained in:
Hennadii Stepanov
2018-10-31 21:15:31 +02:00
parent 53bb6be3f8
commit 2464925e7b
4 changed files with 25 additions and 44 deletions

View File

@@ -1,11 +1,10 @@
// Copyright (c) 2011-2015 The Bitcoin Core developers
// Copyright (c) 2011-2018 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_QT_MACDOCKICONHANDLER_H
#define BITCOIN_QT_MACDOCKICONHANDLER_H
#include <QMainWindow>
#include <QObject>
QT_BEGIN_NAMESPACE
@@ -13,7 +12,7 @@ class QMenu;
class QWidget;
QT_END_NAMESPACE
/** Macintosh-specific dock icon handler.
/** macOS-specific Dock icon handler.
*/
class MacDockIconHandler : public QObject
{
@@ -23,10 +22,8 @@ public:
~MacDockIconHandler();
QMenu *dockMenu();
void setMainWindow(QMainWindow *window);
static MacDockIconHandler *instance();
static void cleanup();
void handleDockIconClickEvent();
Q_SIGNALS:
void dockIconClicked();
@@ -36,7 +33,6 @@ private:
QWidget *m_dummyWidget;
QMenu *m_dockMenu;
QMainWindow *mainWindow;
};
#endif // BITCOIN_QT_MACDOCKICONHANDLER_H