Index: TortoiseShell/ContextMenu.cpp =================================================================== --- TortoiseShell/ContextMenu.cpp (revision 16986) +++ TortoiseShell/ContextMenu.cpp (working copy) @@ -917,7 +917,17 @@ // separator if (idCmd != idCmdFirst) InsertMenu(hMenu, indexMenu++, MF_SEPARATOR|MF_BYPOSITION, 0, NULL); - + + MENUINFO MenuInfo; + + memset(&MenuInfo, 0, sizeof(MenuInfo)); + + MenuInfo.cbSize = sizeof(MenuInfo); + MenuInfo.fMask = MIM_STYLE | MIM_APPLYTOSUBMENUS; + MenuInfo.dwStyle = MNS_CHECKORBMP; + + SetMenuInfo(hMenu, &MenuInfo); + return ResultFromScode(MAKE_SCODE(SEVERITY_SUCCESS, 0, (USHORT)(idCmd - idCmdFirst))); } @@ -1225,6 +1235,16 @@ //separator after InsertMenu(hMenu, indexMenu++, MF_SEPARATOR|MF_BYPOSITION, 0, NULL); idCmd++; + MENUINFO MenuInfo; + + memset(&MenuInfo, 0, sizeof(MenuInfo)); + + MenuInfo.cbSize = sizeof(MenuInfo); + MenuInfo.fMask = MIM_STYLE | MIM_APPLYTOSUBMENUS; + MenuInfo.dwStyle = MNS_CHECKORBMP; + + SetMenuInfo(hMenu, &MenuInfo); + //return number of menu items added return ResultFromScode(MAKE_SCODE(SEVERITY_SUCCESS, 0, (USHORT)(idCmd - idCmdFirst))); } Index: Utils/MiscUI/IconMenu.cpp =================================================================== --- Utils/MiscUI/IconMenu.cpp (revision 16975) +++ Utils/MiscUI/IconMenu.cpp (working copy) @@ -51,6 +51,42 @@ bitmaps.clear(); } +BOOL CIconMenu::CreateMenu() +{ + if (__super::CreateMenu() == FALSE) + return FALSE; + + SetMenuStyle(); + + return TRUE; +} + +BOOL CIconMenu::CreatePopupMenu() +{ + if (__super::CreatePopupMenu() == FALSE) + return FALSE; + + SetMenuStyle(); + + return TRUE; +} + +BOOL CIconMenu::SetMenuStyle(void) +{ + MENUINFO MenuInfo; + + + memset(&MenuInfo, 0, sizeof(MenuInfo)); + + MenuInfo.cbSize = sizeof(MenuInfo); + MenuInfo.fMask = MIM_STYLE | MIM_APPLYTOSUBMENUS; + MenuInfo.dwStyle = MNS_CHECKORBMP; + + SetMenuInfo(&MenuInfo); + + return TRUE; +} + BOOL CIconMenu::AppendMenuIcon(UINT_PTR nIDNewItem, LPCTSTR lpszNewItem, UINT uIcon /* = 0 */) { TCHAR menutextbuffer[255] = {0}; @@ -76,6 +112,7 @@ info.hbmpItem = HBMMENU_CALLBACK; } icons[nIDNewItem] = uIcon; + return InsertMenuItem((UINT)nIDNewItem, &info); } Index: Utils/MiscUI/IconMenu.h =================================================================== --- Utils/MiscUI/IconMenu.h (revision 16975) +++ Utils/MiscUI/IconMenu.h (working copy) @@ -38,12 +38,15 @@ CIconMenu(void); ~CIconMenu(void); + BOOL CreateMenu(); + BOOL CreatePopupMenu(); BOOL AppendMenuIcon(UINT_PTR nIDNewItem, LPCTSTR lpszNewItem, UINT uIcon = 0); BOOL AppendMenuIcon(UINT_PTR nIDNewItem, UINT_PTR nNewItem, UINT uIcon = 0); void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct); private: + BOOL SetMenuStyle(void); HBITMAP IconToBitmapPARGB32(UINT uIcon); HRESULT Create32BitHBITMAP(HDC hdc, const SIZE *psize, __deref_opt_out void **ppvBits, __out HBITMAP* phBmp); HRESULT ConvertBufferToPARGB32(HPAINTBUFFER hPaintBuffer, HDC hdc, HICON hicon, SIZE& sizIcon);