#include "wx/wxprec.h"
-#include "wx/defs.h"
-
#ifdef wxHAS_TASK_BAR_ICON
#include "wx/mac/private.h"
{
//TODO: This is a complete copy of
//static pascal OSStatus wxMacAppCommandEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
-
+
+ if (! pTB->GetCurrentMenu() )
+ {
+ return eventNotHandledErr;
+ }
+
MenuRef hMenu = MAC_WXHMENU(pTB->GetCurrentMenu()->GetHMenu());
OSStatus result = eventNotHandledErr ;
// Operations:
bool wxTaskBarIcon::SetIcon(const wxIcon& icon, const wxString& tooltip)
{
- wxMask* mask = icon.GetMask();
- if (!mask)
+ wxBitmap bmp( icon ) ;
+ OSStatus err = noErr ;
+
+ CGImageRef pImage;
+
+#if 1 // is always available under OSX now
+ pImage = (CGImageRef) bmp.CGImageCreate() ;
+#else
+ WXHBITMAP iconport ;
+ WXHBITMAP maskport ;
+ iconport = bmp.GetHBITMAP( &maskport ) ;
+
+ if (!maskport)
{
// Make a mask with no transparent pixels
- wxBitmap bmp(icon.GetWidth(), icon.GetHeight());
+ wxBitmap mbmp(icon.GetWidth(), icon.GetHeight());
wxMemoryDC dc;
- dc.SelectObject(bmp);
+ dc.SelectObject(mbmp);
dc.SetBackground(*wxBLACK_BRUSH);
dc.Clear();
dc.SelectObject(wxNullBitmap);
- mask = new wxMask(bmp, *wxWHITE);
+ bmp.SetMask( new wxMask(mbmp, *wxWHITE) ) ;
+ iconport = bmp.GetHBITMAP( &maskport ) ;
}
-
- CGImageRef pImage;
//create the icon from the bitmap and mask bitmap contained within
- OSStatus err = CreateCGImageFromPixMaps(
- GetGWorldPixMap(MAC_WXHBITMAP(icon.GetHBITMAP())),
- GetGWorldPixMap(MAC_WXHBITMAP(mask->GetMaskBitmap())),
- &pImage
- );
-
+ err = CreateCGImageFromPixMaps(
+ GetGWorldPixMap(MAC_WXHBITMAP(iconport)),
+ GetGWorldPixMap(MAC_WXHBITMAP(maskport)),
+ &pImage
+ );
wxASSERT(err == 0);
-
+#endif
+ wxASSERT(pImage != NULL );
err = SetApplicationDockTileImage(pImage);
-
+
wxASSERT(err == 0);
if (pImage != NULL)
CGImageRelease(pImage);
-
- if (!icon.GetMask())
- delete mask;
return m_iconAdded = err == noErr;
}