Fix uninit/release

--HG--
branch : item_group
This commit is contained in:
Guillaume Dupuy 2017-03-18 01:45:40 +01:00
parent 6af0fd168c
commit f222d1736a
2 changed files with 14 additions and 1 deletions

View file

@ -77,7 +77,7 @@ void CItemGroup::writeTo(xmlNodePtr node)
for(int i=0;i<removeBeforeEquip.size();i++)
{
xmlNodePtr removeNode = xmlNewChild(groupNode, NULL, (const xmlChar*)"remove", NULL);
xmlSetProp(removeNode, (const xmlChar*)"slot", (const xmlChar*)removeBeforeEquip[i]);
xmlSetProp(removeNode, (const xmlChar*)"slot", (xmlChar*)SLOT_EQUIPMENT::toString(removeBeforeEquip[i]).c_str());
}
}
@ -203,6 +203,18 @@ void CItemGroupManager::linkInterface()
void CItemGroupManager::uninit()
{
saveGroups();
unlinkInterface();
_Groups.clear();
}
void CItemGroupManager::unlinkInterface()
{
// We need to unlink our menu to avoid crash on interface release
CWidgetManager* pWM = CWidgetManager::getInstance();
CGroupMenu *pGroupMenu = dynamic_cast<CGroupMenu*>(pWM->getElementFromId("ui:interface:item_menu_in_bag:item_group_menu"));
CGroupSubMenu *pGroupSubMenu = pGroupMenu->getRootMenu();
pGroupMenu->reset();
pGroupMenu->delGroup(pGroupSubMenu, true);
}
// Inspired from macro parsing

View file

@ -78,6 +78,7 @@ public:
void saveGroups();
bool loadGroups();
void linkInterface();
void unlinkInterface();
//Return NULL if no group was found
//Return false if no group was found
bool moveGroup(std::string name, INVENTORIES::TInventory dst);