7 #include <QImageWriter> 13 #include <Cocoa/Cocoa.h> 14 #include <objc/objc.h> 15 #include <objc/message.h> 30 Class cls = objc_getClass(
"NSApplication");
31 id appInst = objc_msgSend((
id)cls, sel_registerName(
"sharedApplication"));
33 if (appInst !=
nullptr) {
34 id delegate = objc_msgSend(appInst, sel_registerName(
"delegate"));
35 Class delClass = (Class)objc_msgSend(delegate, sel_registerName(
"class"));
36 SEL shouldHandle = sel_registerName(
"applicationShouldHandleReopen:hasVisibleWindows:");
37 if (class_getInstanceMethod(delClass, shouldHandle))
47 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
53 #if QT_VERSION >= 0x050200 76 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
79 image = [[NSImage imageNamed:
@"NSApplicationIcon"] retain];
82 QSize size = icon.actualSize(QSize(128, 128));
83 QPixmap pixmap = icon.pixmap(size);
86 QBuffer notificationBuffer;
87 if (!pixmap.isNull() && notificationBuffer.open(QIODevice::ReadWrite)) {
88 QImageWriter writer(¬ificationBuffer,
"PNG");
89 if (writer.write(pixmap.toImage())) {
90 NSData* macImgData = [NSData dataWithBytes:notificationBuffer.buffer().data()
91 length:notificationBuffer.buffer().size()];
92 image = [[NSImage alloc] initWithData:macImgData];
98 image = [[NSImage imageNamed:
@"NSApplicationIcon"] retain];
102 [NSApp setApplicationIconImage:image];
void setupDockClickHandler()
Macintosh-specific dock icon handler.
void handleDockIconClickEvent()
void setIcon(const QIcon &icon)
static MacDockIconHandler * instance()
void setMainWindow(QMainWindow *window)
bool dockClickHandler(id self, SEL _cmd,...)