return *this;
Clear();
-
- // Small problem with this approach: if the copied object goes out of scope,
- // all of the objects we copied in here will be deleted. D'oh!
- // For this COPY constructor to be meaningful, we have to actually COPY the
- // objects in this Container, not just MOVE a copy of the POINTER! D-:
std::vector<Object *>::const_iterator i;
-// for(uint i=0; i<from.objects.size(); i++)
for(i=from.objects.begin(); i!=from.objects.end(); i++)
{
-// Object * object = from.objects[i];
+printf("Container: Copying object $%08X...\n", *i);
Object * object = (*i)->Copy();
-
- // Need to actually COPY the object here, not copy the pointer only!!
- // (which we do now, above :-P)
-
objects.push_back(object);
}
/*virtual*/ bool Container::Collided(Vector point)
{
objectWasDragged = false;
-// Vector v1 = position - point;
-
bool collision = false;
+ lastObjectClicked = NULL;
- // NOTE that this deletes the object on mouse down instead of mouse up. Have to
- // check to see how it feels to do it that way...
+ // NOTE that this deletes the object on mouse down instead of mouse up.
+ // Have to check to see how it feels to do it that way...
+ // N.B.: This only works because the toolAction is not set, &
+ // Object::ignoreClicks isn't set either...
if (deleteActive)
{
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end();)
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
{
if ((*i)->Collided(point))
+ {
collision = true;
+ lastObjectClicked = *i;
+//printf("Container::Collided: lastObjectClicked = %X\n", lastObjectClicked);
+ }
}
}
if (newContainer == NULL)
return;
- // Shuffle the contents of this container to the new one
+ // Copy the contents of this container to the new one
for(std::vector<Object *>::iterator i=objects.begin(); i!=objects.end(); i++)
{
if ((*i)->state == OSSelected)