Skip to content

Commit

Permalink
Remove obj_c for macOS Dock icon setting
Browse files Browse the repository at this point in the history
Qt `setWindowIcon()` does this work.
  • Loading branch information
hebasto committed Oct 31, 2018
1 parent f1e2f2a commit 53bb6be
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 41 deletions.
4 changes: 0 additions & 4 deletions src/qt/bitcoingui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,8 @@ BitcoinGUI::BitcoinGUI(interfaces::Node& node, const PlatformStyle *_platformSty
windowTitle += tr("Node");
}
windowTitle += " " + networkStyle->getTitleAddText();
#ifndef Q_OS_MAC
QApplication::setWindowIcon(networkStyle->getTrayAndWindowIcon());
setWindowIcon(networkStyle->getTrayAndWindowIcon());
#else
MacDockIconHandler::instance()->setIcon(networkStyle->getAppIcon());
#endif
setWindowTitle(windowTitle);

rpcConsole = new RPCConsole(node, _platformStyle, 0);
Expand Down
2 changes: 0 additions & 2 deletions src/qt/macdockiconhandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
#include <QObject>

QT_BEGIN_NAMESPACE
class QIcon;
class QMenu;
class QWidget;
QT_END_NAMESPACE
Expand All @@ -24,7 +23,6 @@ class MacDockIconHandler : public QObject
~MacDockIconHandler();

QMenu *dockMenu();
void setIcon(const QIcon &icon);
void setMainWindow(QMainWindow *window);
static MacDockIconHandler *instance();
static void cleanup();
Expand Down
35 changes: 0 additions & 35 deletions src/qt/macdockiconhandler.mm
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@

#include "macdockiconhandler.h"

#include <QImageWriter>
#include <QMenu>
#include <QBuffer>
#include <QWidget>

#undef slots
Expand Down Expand Up @@ -71,39 +69,6 @@ void setupDockClickHandler() {
return this->m_dockMenu;
}

void MacDockIconHandler::setIcon(const QIcon &icon)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSImage *image = nil;
if (icon.isNull())
image = [[NSImage imageNamed:@"NSApplicationIcon"] retain];
else {
// generate NSImage from QIcon and use this as dock icon.
QSize size = icon.actualSize(QSize(128, 128));
QPixmap pixmap = icon.pixmap(size);

// Write image into a R/W buffer from raw pixmap, then save the image.
QBuffer notificationBuffer;
if (!pixmap.isNull() && notificationBuffer.open(QIODevice::ReadWrite)) {
QImageWriter writer(&notificationBuffer, "PNG");
if (writer.write(pixmap.toImage())) {
NSData* macImgData = [NSData dataWithBytes:notificationBuffer.buffer().data()
length:notificationBuffer.buffer().size()];
image = [[NSImage alloc] initWithData:macImgData];
}
}

if(!image) {
// if testnet image could not be created, load std. app icon
image = [[NSImage imageNamed:@"NSApplicationIcon"] retain];
}
}

[NSApp setApplicationIconImage:image];
[image release];
[pool release];
}

MacDockIconHandler *MacDockIconHandler::instance()
{
if (!s_instance)
Expand Down

0 comments on commit 53bb6be

Please sign in to comment.