summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa
diff options
context:
space:
mode:
authorSergio Ahumada <sergio.ahumada@digia.com>2013-05-07 12:01:46 +0200
committerSergio Ahumada <sergio.ahumada@digia.com>2013-05-07 12:02:41 +0200
commitdb44b891fb8710121fec7dc4fa3bd91493dc2a1c (patch)
treef6729181387ac4a4e4fa2dad445febebba25812b /src/plugins/platforms/cocoa
parentc917579a15d60a7b70c5fc5f00f6451da7c4e608 (diff)
parent95045168470f8865263145b86597b6641b4cc035 (diff)
Merge branch 'stable' into dev
Diffstat (limited to 'src/plugins/platforms/cocoa')
-rw-r--r--src/plugins/platforms/cocoa/qcocoatheme.mm29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoatheme.mm b/src/plugins/platforms/cocoa/qcocoatheme.mm
index 8337e00eb6..36d7a49746 100644
--- a/src/plugins/platforms/cocoa/qcocoatheme.mm
+++ b/src/plugins/platforms/cocoa/qcocoatheme.mm
@@ -54,6 +54,7 @@
#include "qcocoamenu.h"
#include "qcocoamenubar.h"
#include "qcocoahelpers.h"
+#include "qcocoaautoreleasepool.h"
#include <QtCore/qfileinfo.h>
#include <QtGui/private/qguiapplication_p.h>
@@ -250,27 +251,17 @@ QPixmap QCocoaTheme::standardPixmap(StandardPixmap sp, const QSizeF &size) const
QPixmap QCocoaTheme::fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size) const
{
- FSRef macRef;
- OSStatus status = FSPathMakeRef(reinterpret_cast<const UInt8*>(fileInfo.canonicalFilePath().toUtf8().constData()),
- &macRef, 0);
- if (status != noErr)
- return QPixmap();
- FSCatalogInfo info;
- HFSUniStr255 macName;
- status = FSGetCatalogInfo(&macRef, kIconServicesCatalogInfoMask, &info, &macName, 0, 0);
- if (status != noErr)
- return QPixmap();
- IconRef iconRef;
- SInt16 iconLabel;
- status = GetIconRefFromFileInfo(&macRef, macName.length, macName.unicode,
- kIconServicesCatalogInfoMask, &info, kIconServicesNormalUsageFlag,
- &iconRef, &iconLabel);
- if (status != noErr)
- return QPixmap();
+ QCocoaAutoReleasePool pool;
- QPixmap pixmap = qt_mac_convert_iconref(iconRef, size.width(), size.height());
- ReleaseIconRef(iconRef);
+ NSImage *iconImage = [[NSWorkspace sharedWorkspace] iconForFile:QCFString::toNSString(fileInfo.canonicalFilePath())];
+ if (!iconImage)
+ return QPixmap();
+ NSRect iconRect = NSMakeRect(0, 0, size.width(), size.height());
+ CGImageRef cgImage = [iconImage CGImageForProposedRect:&iconRect
+ context:[NSGraphicsContext currentContext]
+ hints:nil];
+ QPixmap pixmap = QPixmap::fromImage(qt_mac_toQImage(cgImage));
return pixmap;
}