implement QCocoaWindow::setWindowIcon
authorJoerg Bornemann <joerg.bornemann@digia.com>
Thu, 4 Oct 2012 11:19:32 +0000 (13:19 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 16 Oct 2012 15:31:31 +0000 (17:31 +0200)
Code taken from Qt 4.8.

Task-number: QTBUG-27175

Change-Id: I0f7a1add3ea63761c956e43d591cd1b26f25760e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
src/plugins/platforms/cocoa/qcocoawindow.h
src/plugins/platforms/cocoa/qcocoawindow.mm

index 014db37..3c6dd96 100644 (file)
@@ -102,6 +102,7 @@ public:
     Qt::WindowState setWindowState(Qt::WindowState state);
     void setWindowTitle(const QString &title);
     void setWindowFilePath(const QString &filePath);
+    void setWindowIcon(const QIcon &icon);
     void raise();
     void lower();
     void propagateSizeHints();
index f4a4936..c658a8d 100644 (file)
@@ -429,6 +429,26 @@ void QCocoaWindow::setWindowFilePath(const QString &filePath)
     [m_nsWindow setRepresentedFilename: fi.exists() ? QCFString::toNSString(filePath) : @""];
 }
 
+void QCocoaWindow::setWindowIcon(const QIcon &icon)
+{
+    QCocoaAutoReleasePool pool;
+
+    NSButton *iconButton = [m_nsWindow standardWindowButton:NSWindowDocumentIconButton];
+    if (iconButton == nil) {
+        NSString *title = QCFString::toNSString(window()->windowTitle());
+        [m_nsWindow setRepresentedURL:[NSURL fileURLWithPath:title]];
+        iconButton = [m_nsWindow standardWindowButton:NSWindowDocumentIconButton];
+    }
+    if (icon.isNull()) {
+        [iconButton setImage:nil];
+    } else {
+        QPixmap pixmap = icon.pixmap(QSize(22, 22));
+        NSImage *image = static_cast<NSImage *>(qt_mac_create_nsimage(pixmap));
+        [iconButton setImage:image];
+        [image release];
+    }
+}
+
 void QCocoaWindow::raise()
 {
     //qDebug() << "raise" << this;