diff --git a/abstractGuiManager.cpp b/abstractGuiManager.cpp index b6e9dd9..f30f2c8 100644 --- a/abstractGuiManager.cpp +++ b/abstractGuiManager.cpp @@ -207,18 +207,20 @@ namespace vb01Gui{ for (int i = 0; i < guiRectangles.size(); i++) { if (r == guiRectangles[i]) { guiRectangles.erase(guiRectangles.begin() + i); + Root::getSingleton()->getGuiNode()->dettachChild(r); delete r; break; } } } - //TODO delete node too void AbstractGuiManager::removeText(Text* t) { for (int i = 0; i < texts.size(); i++) { if (t == texts[i]) { texts.erase(texts.begin() + i); - delete t; + Node *textNode = t->getNode(); + Root::getSingleton()->getGuiNode()->dettachChild(textNode); + delete textNode; break; } } @@ -311,8 +313,10 @@ namespace vb01Gui{ while(targetId != guiRectangles.size()) { if(find(exceptions.begin(), exceptions.end(), guiRectangles[targetId]) == exceptions.end()){ - delete guiRectangles[guiRectangles.size() - 1]; + Node *guiRect = guiRectangles[guiRectangles.size() - 1]; guiRectangles.pop_back(); + Root::getSingleton()->getGuiNode()->dettachChild(guiRect); + delete guiRect; } else targetId++; @@ -322,10 +326,12 @@ namespace vb01Gui{ void AbstractGuiManager::removeAllTexts(vector exceptions) { int targetId = 0; - while(targetId != textboxes.size()) { + while(targetId != texts.size()) { if(find(exceptions.begin(), exceptions.end(), texts[targetId]) == exceptions.end()){ - delete texts[texts.size() - 1]; + Node *textNode = texts[texts.size() - 1]->getNode(); texts.pop_back(); + Root::getSingleton()->getGuiNode()->dettachChild(textNode); + delete textNode; } else targetId++;