bringing back old style macOS icons loading

see https://github.com/wxWidgets/wxWidgets/pull/925
This commit is contained in:
Stefan Csomor
2018-10-05 15:01:24 +02:00
parent f4c7a31414
commit 162ea7b1ef
2 changed files with 116 additions and 1 deletions

View File

@@ -218,7 +218,7 @@ WXImage wxOSXGetImageFromCGImage( CGImageRef image, double scaleFactor, bool is
#endif
}
#if wxOSX_USE_ICONREF
#if wxOSX_USE_COCOA
WXImage WXDLLIMPEXP_CORE wxOSXGetNSImageFromIconRef( WXHICON iconref )
{
NSImage *newImage = [[NSImage alloc] initWithIconRef:iconref];

View File

@@ -1778,6 +1778,8 @@ public:
wxIMPLEMENT_DYNAMIC_CLASS(wxJPEGResourceHandler, wxBundleResourceHandler);
#if wxOSX_USE_COCOA
class WXDLLEXPORT wxICNSResourceHandler: public wxBundleResourceHandler
{
wxDECLARE_DYNAMIC_CLASS(wxICNSResourceHandler);
@@ -1789,10 +1791,123 @@ public:
SetExtension("icns");
SetType(wxBITMAP_TYPE_ICON_RESOURCE);
}
virtual bool LoadFile(wxBitmap *bitmap,
const wxString& name,
wxBitmapType type,
int desiredWidth,
int desiredHeight) wxOVERRIDE;
};
wxIMPLEMENT_DYNAMIC_CLASS(wxICNSResourceHandler, wxBundleResourceHandler);
bool wxICNSResourceHandler::LoadFile(wxBitmap *bitmap,
const wxString& resourceName,
wxBitmapType type,
int desiredWidth,
int desiredHeight)
{
OSType theId = 0 ;
if ( resourceName == wxT("wxICON_INFORMATION") )
{
theId = kAlertNoteIcon ;
}
else if ( resourceName == wxT("wxICON_QUESTION") )
{
theId = kAlertCautionIcon ;
}
else if ( resourceName == wxT("wxICON_WARNING") )
{
theId = kAlertCautionIcon ;
}
else if ( resourceName == wxT("wxICON_ERROR") )
{
theId = kAlertStopIcon ;
}
else if ( resourceName == wxT("wxICON_FOLDER") )
{
theId = kGenericFolderIcon ;
}
else if ( resourceName == wxT("wxICON_FOLDER_OPEN") )
{
theId = kOpenFolderIcon ;
}
else if ( resourceName == wxT("wxICON_NORMAL_FILE") )
{
theId = kGenericDocumentIcon ;
}
else if ( resourceName == wxT("wxICON_EXECUTABLE_FILE") )
{
theId = kGenericApplicationIcon ;
}
else if ( resourceName == wxT("wxICON_CDROM") )
{
theId = kGenericCDROMIcon ;
}
else if ( resourceName == wxT("wxICON_FLOPPY") )
{
theId = kGenericFloppyIcon ;
}
else if ( resourceName == wxT("wxICON_HARDDISK") )
{
theId = kGenericHardDiskIcon ;
}
else if ( resourceName == wxT("wxICON_REMOVABLE") )
{
theId = kGenericRemovableMediaIcon ;
}
else if ( resourceName == wxT("wxICON_DELETE") )
{
theId = kToolbarDeleteIcon ;
}
else if ( resourceName == wxT("wxICON_GO_BACK") )
{
theId = kBackwardArrowIcon ;
}
else if ( resourceName == wxT("wxICON_GO_FORWARD") )
{
theId = kForwardArrowIcon ;
}
else if ( resourceName == wxT("wxICON_GO_HOME") )
{
theId = kToolbarHomeIcon ;
}
else if ( resourceName == wxT("wxICON_HELP_SETTINGS") )
{
theId = kGenericFontIcon ;
}
else if ( resourceName == wxT("wxICON_HELP_PAGE") )
{
theId = kGenericDocumentIcon ;
}
else if ( resourceName == wxT( "wxICON_PRINT" ) )
{
theId = kPrintMonitorFolderIcon;
}
else if ( resourceName == wxT( "wxICON_HELP_FOLDER" ) )
{
theId = kHelpFolderIcon;
}
if ( theId != 0 )
{
IconRef iconRef = NULL ;
__Verify_noErr(GetIconRef( kOnSystemDisk, kSystemIconsCreator, theId, &iconRef )) ;
if ( iconRef )
{
WXImage img = wxOSXGetNSImageFromIconRef(iconRef);
bitmap->Create(img);
return true;
}
}
return wxBundleResourceHandler::LoadFile( bitmap, resourceName, type, desiredWidth, desiredHeight);
}
#endif // wxOSX_USE_COCOA
bool wxBundleResourceHandler::LoadFile(wxBitmap *bitmap,
const wxString& name,
wxBitmapType WXUNUSED(type),