Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
sdottaka committed Jun 27, 2024
1 parent 946e95b commit 6aff599
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
14 changes: 11 additions & 3 deletions Src/Common/BCMenu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1313,6 +1313,12 @@ void BCMenu::DeleteMenuList(void)

void BCMenu::SetMenuItemBitmap(intptr_t xoffset, int pos, unsigned state)
{
if (m_AllImagesID[xoffset].state == state && m_AllImagesID[xoffset].pBitmap)
{
SetMenuItemBitmaps(static_cast<UINT>(pos), MF_BYPOSITION, m_AllImagesID[xoffset].pBitmap.get(), nullptr);
return;
}

const int cxSMIcon = GetSystemMetrics(SM_CXSMICON);
const int cySMIcon = GetSystemMetrics(SM_CYSMICON);

Expand Down Expand Up @@ -1340,6 +1346,7 @@ void BCMenu::SetMenuItemBitmap(intptr_t xoffset, int pos, unsigned state)
dcMem.SelectObject(pOldBitmap);
SetMenuItemBitmaps(static_cast<UINT>(pos), MF_BYPOSITION, pBitmap, nullptr);
m_AllImagesID[xoffset].pBitmap.reset(pBitmap);
m_AllImagesID[xoffset].state = state;
}

void BCMenu::SynchronizeMenu(void)
Expand Down Expand Up @@ -1380,10 +1387,9 @@ void BCMenu::SynchronizeMenu(void)
mdata->SetWideString(string);//SK: modified for dynamic allocation

ModifyMenu(j,mdata->nFlags,nID,MakeItemData(mdata));

if(!m_bEnableOwnerDraw && mdata->global_offset >= 0)
SetMenuItemBitmap(mdata->global_offset,j,state);
}
if(!m_bEnableOwnerDraw && mdata->global_offset >= 0)
SetMenuItemBitmap(mdata->global_offset,j,state);
}
if(mdata != nullptr)temp.Add(mdata);
}
Expand Down Expand Up @@ -1899,6 +1905,8 @@ INT_PTR BCMenu::AddToGlobalImageList(int nIconNormal,int nID)
if(existsloc>=0){
m_AllImagesID[existsloc].resourceId = (nIconNormal & 0x40000000) ? (nIconNormal & 0xffff) : nIconNormal;
m_AllImagesID[existsloc].bitmapIndex = (nIconNormal & 0x40000000) ? ((nIconNormal & 0x3fff0000) >> 16) : -1;
m_AllImagesID[existsloc].pBitmap.reset();
m_AllImagesID[existsloc].state = 0;
loc = existsloc;
}
else{
Expand Down
2 changes: 1 addition & 1 deletion Src/Common/BCMenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ class BCMenu : public CMenu
static CTypedPtrArray<CPtrArray, HMENU> m_AllSubMenus;
// Global ImageList
static CImageList m_AllImages;
struct ImageData { int id; int resourceId; int bitmapIndex; std::unique_ptr<CBitmap> pBitmap; };
struct ImageData { int id; int resourceId; int bitmapIndex; std::unique_ptr<CBitmap> pBitmap; unsigned state; };
static std::vector<ImageData> m_AllImagesID;
static bool m_bHasNotLoadedImages;
// icon size
Expand Down

0 comments on commit 6aff599

Please sign in to comment.