]> Shamusworld >> Repos - architektonas/blobdiff - src/container.cpp
Readded click to add dimension to object (for Line).
[architektonas] / src / container.cpp
index 976172fb38220f094838a7cc806ab1fa482a9712..9cda1fa38b95e6c10d1af0659326a69af61c5501 100644 (file)
@@ -54,22 +54,12 @@ Container & Container::operator=(const Container & from)
                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);
        }
 
@@ -133,12 +123,13 @@ having to ungroup them first (like Inkscape).
 /*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();)
@@ -159,7 +150,11 @@ printf("Container::Collided: Deleting object ($%X)\n", *i);
                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);
+                       }
                }
        }
 
@@ -493,7 +488,7 @@ void Container::CopySelectedContentsTo(Container * newContainer)
        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)