X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcontainer.cpp;h=cd50d587381c4a62002d2211cad3c8436e9ecb87;hb=669a05b5a52bd759f0ea08772e0ed17222b015a0;hp=da491f617b8366ff71bacf1bba6b0ebda26a3bef;hpb=bb8d0671717bac2c5350e34024273381be1d8175;p=architektonas diff --git a/src/container.cpp b/src/container.cpp index da491f6..cd50d58 100644 --- a/src/container.cpp +++ b/src/container.cpp @@ -56,11 +56,18 @@ Container & Container::operator=(const Container & from) // 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(uint i=0; i::const_iterator i; + +// for(uint i=0; iCopy(); - // Need to copy the object here... + // Need to actually COPY the object here, not copy the pointer only!! + // (which we do now, above :-P) objects.push_back(object); } @@ -73,8 +80,10 @@ Container & Container::operator=(const Container & from) { QRectF boundary; +//int a=1; for(std::vector::iterator i=objects.begin(); i!=objects.end(); i++) { +//printf("Containter::Draw item #%i [%X]...\n", a++, *i); (*i)->Draw(painter); boundary = boundary.united((*i)->Extents()); } @@ -153,6 +162,9 @@ printf("Container::Collided: Deleting object ($%X)\n", *i); } } + if (snapToGrid) + point = SnapPointToGrid(point); + // We check to see if the container we're trying to access is the // DrawingView's document. If so, we ignore the state of the container. // Otherwise, we care about the state of the container. :-) @@ -490,3 +502,21 @@ void Container::ResizeAllDimensions(double newSize) fprintf(file, "ENDCONTAINER\n"); } + +/*virtual*/ Object * Container::Copy(void) +{ +#warning "!!! This doesn't take care of attached Dimensions !!!" +/* +This is a real problem. While having a pointer in the Dimension to this line's points +is fast & easy, it creates a huge problem when trying to replicate an object like this. + +Maybe a way to fix that then, is to have reference numbers instead of pointers. That +way, if you copy them, ... you might still have problems. Because you can't be sure if +a copy will be persistant or not, you then *definitely* do not want them to have the +same reference number. +*/ + Container * c = new Container(position, parent); + *c = *this; + return c; +} +