- if (aPosMap.count(thePrs.Access()) > 0)
- aPosMap.erase(aPosMap.find(thePrs.Access()));
- }
- for (aIt = myShapes.begin(); aIt != myShapes.end(); ++aIt) {
- if (aIt->second.size() == 0) {
- myShapes.erase(aIt);
- aIt = myShapes.begin();
+ if (aPosMap.count(thePrs) > 0) {
+ // Erase index
+ aPosMap.erase(aPosMap.find(thePrs));
+ if (aPosMap.size() == 0)
+ // Delete the map
+ aToDel.push_back(aIt->first);
+ else {
+ // Reindex objects positions in order to avoid spaces
+ PositionsMap::iterator aIt;
+ int i = 0;
+ for (aIt = aPosMap.begin(); aIt != aPosMap.end(); aIt++, i++)
+ aIt->second = i;
+ }