| 866 | } |
| 867 | |
| 868 | void GuiMenuBar::removeMenuItem(Menu *menu, MenuItem *menuItem) |
| 869 | { |
| 870 | for(MenuItem **walk = &menu->firstMenuItem; *walk; walk = &(*walk)->nextMenuItem) |
| 871 | { |
| 872 | if(*walk == menuItem) |
| 873 | { |
| 874 | *walk = menuItem->nextMenuItem; |
| 875 | break; |
| 876 | } |
| 877 | } |
| 878 | |
| 879 | // If this is a submenu, then be sure to clear the submenu's items |
| 880 | if(menuItem->isSubmenu) |
| 881 | { |
| 882 | clearSubmenuItems(menuItem); |
| 883 | } |
| 884 | |
| 885 | dFree(menuItem->text); |
| 886 | dFree(menuItem->accelerator); |
| 887 | delete menuItem; |
| 888 | } |
| 889 | |
| 890 | GuiMenuBar::MenuItem* GuiMenuBar::addMenuItem(Menu *menu, const char *text, U32 id, const char *accelerator, S32 checkGroup, const char *cmd ) |
| 891 | { |