summaryrefslogtreecommitdiff
path: root/win/Bmpmenu.cpp
diff options
context:
space:
mode:
authorleo2005-03-15 19:06:04 +0000
committerleo2005-03-15 19:06:04 +0000
commit05ce44a61fcc3dad6e23977539ae06c678f46896 (patch)
tree75d544f07458241f7deebed587952638df83122d /win/Bmpmenu.cpp
parent638a59b2400a2721184b281231dd443736740b37 (diff)
Correctly remove menu items.
git-svn-id: http://svn.leocad.org/trunk@390 c7d43263-9d01-0410-8a33-9dba5d9f93d6
Diffstat (limited to 'win/Bmpmenu.cpp')
-rw-r--r--win/Bmpmenu.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/win/Bmpmenu.cpp b/win/Bmpmenu.cpp
index 67bfb0a..98fb39f 100644
--- a/win/Bmpmenu.cpp
+++ b/win/Bmpmenu.cpp
@@ -1,5 +1,8 @@
// BMPMenu.cpp : implementation file
-// Version : 2.3
+//
+// Based on Brent Corkum's BCMenu 2.3 class from
+// http://www.rocscience.com/~corkum/BCMenu.html
+//
#include "stdafx.h"
#include "BMPMenu.h"
@@ -1414,14 +1417,29 @@ BOOL CBMPMenu::ChangeMenuItemShortcut(const char *Shortcut, UINT nID)
BOOL CBMPMenu::DeleteMenu(UINT nPosition, UINT nFlags)
{
if (nFlags == MF_BYPOSITION)
- m_MenuList.RemoveAt(nPosition);
+ {
+ CBMPMenu* pSubMenu = (CBMPMenu*)GetSubMenu(nPosition);
+ if (pSubMenu == NULL)
+ {
+ UINT ID = GetMenuItemID(nPosition);
+ for (int i = 0; i < m_MenuList.GetSize(); i++)
+ {
+ if (m_MenuList[i]->nID == ID)
+ {
+ delete m_MenuList.GetAt(i);
+ m_MenuList.RemoveAt(i);
+ break;
+ }
+ }
+ }
+ }
else
{
int nLoc;
CBMPMenu *psubmenu = FindMenuOption(nPosition, nLoc);
if (psubmenu && nLoc >= 0)
- psubmenu->m_MenuList.RemoveAt(nLoc);
+ psubmenu->DeleteMenu(nLoc, MF_BYPOSITION);
}
return (CMenu::DeleteMenu(nPosition, nFlags));