diff --git a/common/tool/action_menu.cpp b/common/tool/action_menu.cpp index 4e78d091bf..0678b39f72 100644 --- a/common/tool/action_menu.cpp +++ b/common/tool/action_menu.cpp @@ -170,7 +170,6 @@ wxMenuItem* ACTION_MENU::Add( const TOOL_ACTION& aAction, bool aIsCheckmarkEntry wxMenuItem* item = new wxMenuItem( this, aAction.GetUIId(), aAction.GetMenuItem(), aAction.GetDescription(), aIsCheckmarkEntry ? wxITEM_CHECK : wxITEM_NORMAL ); - if( icon ) AddBitmapToMenuItem( item, KiBitmap( icon ) ); @@ -612,9 +611,18 @@ wxMenuItem* ACTION_MENU::appendCopy( const wxMenuItem* aSource ) aSource->GetHelp(), aSource->GetKind() ); // Add the source bitmap if it is not the wxNullBitmap - // On Windows, for Checkable Menu items, adding a null bitmap adds also + // On Windows, for Checkable Menu items, adding a bitmap adds also // our predefined checked alternate bitmap + // On other OS, wxITEM_CHECK and wxITEM_RADIO Menu items do not use custom bitmaps. +#if defined(_WIN32) + // On Windows, AddBitmapToMenuItem() uses the unchecked bitmap for wxITEM_CHECK and wxITEM_RADIO menuitems + // and autoamtically adds a checked bitmap. + // For other menuitrms, use the "checked" bitmap. + bool use_checked_bm = ( aSource->GetKind() == wxITEM_CHECK || aSource->GetKind() == wxITEM_RADIO ) ? false : true; + const wxBitmap& src_bitmap = aSource->GetBitmap( use_checked_bm ); +#else const wxBitmap& src_bitmap = aSource->GetBitmap(); +#endif if( src_bitmap.IsOk() && src_bitmap.GetHeight() > 1 ) // a null bitmap has a 0 size AddBitmapToMenuItem( newItem, src_bitmap );