Add a menuitem to the given submenu
| 1016 | |
| 1017 | // Add a menuitem to the given submenu |
| 1018 | void GuiMenuBar::addSubmenuItem(Menu *menu, MenuItem *submenu, const char *text, U32 id, const char *accelerator, S32 checkGroup) |
| 1019 | { |
| 1020 | // Check that the given menu item supports a submenu |
| 1021 | if(submenu && !submenu->isSubmenu) |
| 1022 | { |
| 1023 | Con::errorf("GuiMenuBar::addSubmenuItem: Attempting to add menuitem '%s' to an invalid submenu",text); |
| 1024 | return; |
| 1025 | } |
| 1026 | |
| 1027 | // allocate the new menu item |
| 1028 | MenuItem *newMenuItem = new MenuItem; |
| 1029 | newMenuItem->text = dStrdup(text); |
| 1030 | if(accelerator[0]) |
| 1031 | newMenuItem->accelerator = dStrdup(accelerator); |
| 1032 | else |
| 1033 | newMenuItem->accelerator = NULL; |
| 1034 | newMenuItem->id = id; |
| 1035 | newMenuItem->checkGroup = checkGroup; |
| 1036 | newMenuItem->nextMenuItem = NULL; |
| 1037 | newMenuItem->acceleratorIndex = 0; |
| 1038 | newMenuItem->enabled = (dStrlen(text) > 1 || text[0] != '-'); |
| 1039 | newMenuItem->visible = true; |
| 1040 | newMenuItem->bitmapIndex = -1; |
| 1041 | |
| 1042 | // Default to not having a submenu |
| 1043 | newMenuItem->isSubmenu = false; |
| 1044 | newMenuItem->submenu = NULL; |
| 1045 | |
| 1046 | // Point back to the submenu's menu |
| 1047 | newMenuItem->submenuParentMenu = menu; |
| 1048 | |
| 1049 | // link it into the menu's menu item list |
| 1050 | MenuItem **walk = &submenu->submenu->firstMenuItem; |
| 1051 | while(*walk) |
| 1052 | walk = &(*walk)->nextMenuItem; |
| 1053 | *walk = newMenuItem; |
| 1054 | } |
| 1055 | |
| 1056 | void GuiMenuBar::addSubmenuItem(Menu *menu, MenuItem *submenu, MenuItem *newMenuItem ) |
| 1057 | { |
no test coverage detected