diff -ur ooo_SRC680_m192_src.orig/vcl/aqua/inc/salmenu.h ooo_SRC680_m192_src/vcl/aqua/inc/salmenu.h --- ooo_SRC680_m192_src.orig/vcl/aqua/inc/salmenu.h 2006-11-10 21:28:37.000000000 +0100 +++ ooo_SRC680_m192_src/vcl/aqua/inc/salmenu.h 2006-11-10 21:35:24.000000000 +0100 @@ -94,6 +94,8 @@ // item's MenuItemIndex in the menu has value 1 MenuItemAttributes maMenuAttributes; + + Bitmap maBitmap; // item image }; #endif // _SV_SALMENU_H diff -ur ooo_SRC680_m192_src.orig/vcl/aqua/source/window/salmenu.cxx ooo_SRC680_m192_src/vcl/aqua/source/window/salmenu.cxx --- ooo_SRC680_m192_src.orig/vcl/aqua/source/window/salmenu.cxx 2006-11-10 21:28:37.000000000 +0100 +++ ooo_SRC680_m192_src/vcl/aqua/source/window/salmenu.cxx 2006-11-10 21:31:08.000000000 +0100 @@ -42,6 +42,9 @@ #ifndef _SV_SALMENU_H #include #endif +#ifndef _SV_IMPBMP_HXX +#include +#endif #define XUBSTRINGTOCFSTRING(string) \ CFStringCreateWithCString(NULL, \ @@ -205,6 +208,39 @@ void AquaSalMenu::SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage ) { fprintf(stderr, ">*>_> %s\n",__func__); + + if (!pSalMenuItem) + return; + + AquaSalMenuItem *pAquaSalMenuItem = static_cast(pSalMenuItem); + + BitmapEx aBitmapEx = rImage.GetBitmapEx(); + + pAquaSalMenuItem->maBitmap = aBitmapEx.GetBitmap(); + + Bitmap aBitmap (pAquaSalMenuItem->maBitmap); + + ImpBitmap *aImpBitmap = aBitmap.ImplGetImpBitmap(); + + if (aImpBitmap) + { + AquaSalBitmap *pSalBmp = static_cast(aImpBitmap->ImplGetSalBitmap()); + CGImageRef xImage = NULL; + + // check alpha + if (aBitmapEx.IsAlpha()) + { + AquaSalBitmap *pSalMask = static_cast(aBitmapEx.GetAlpha().GetBitmap().ImplGetImpBitmap()->ImplGetSalBitmap()); + + if (pSalMask) + xImage = pSalBmp->CreateWithMask ( *pSalMask, 0, 0, pSalBmp->mnWidth, pSalBmp->mnHeight); + } + + if (!xImage) + xImage = pSalBmp->CreateCroppedImage( 0, 0, pSalBmp->mnWidth, pSalBmp->mnHeight ); + + SetMenuItemIconHandle(mrMenuRef, pAquaSalMenuItem->mnMenuItemIndex, kMenuCGImageRefType, (Handle)xImage); + } } void AquaSalMenu::SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const XubString& rText )