X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_ResultBody.cpp;h=80bce61ab64f34182544043f4b18c45e0ef3132e;hb=176403004ff97696f3c0b5f8bdf48692177fb34a;hp=8418ba22fa5c63adfe506f5f044f939c64ddc977;hpb=34afe547352180006fee9600173c4dc93dc1f6c3;p=modules%2Fshaper.git diff --git a/src/Model/Model_ResultBody.cpp b/src/Model/Model_ResultBody.cpp index 8418ba22f..80bce61ab 100644 --- a/src/Model/Model_ResultBody.cpp +++ b/src/Model/Model_ResultBody.cpp @@ -6,8 +6,9 @@ #include #include -#include +#include #include +#include // DEB //#include //#include @@ -16,13 +17,8 @@ Model_ResultBody::Model_ResultBody() { myBuilder = new Model_BodyBuilder(this); -} - -void Model_ResultBody::initAttributes() -{ - // append the color attribute. It is empty, the attribute will be filled by a request - DataPtr aData = data(); - aData->addAttribute(COLOR_ID(), ModelAPI_AttributeIntArray::typeId()); + myWasConcealed = false; + myConnect = ConnectionNotComputed; } void Model_ResultBody::colorConfigInfo(std::string& theSection, std::string& theName, @@ -46,3 +42,35 @@ bool Model_ResultBody::isLatestEqual(const std::shared_ptr& theSh { return myBuilder->isLatestEqual(theShape); } + +bool Model_ResultBody::isConcealed() +{ + bool aResult = false; + if (ModelAPI_ResultBody::isConcealed()) { + aResult = true; + } else { + ResultPtr aThis = std::dynamic_pointer_cast(data()->owner()); + if (aThis.get()) { + ResultCompSolidPtr aParent = ModelAPI_Tools::compSolidOwner(aThis); + if (aParent.get()) { + if (aParent->isConcealed()) + aResult = true; + } + } + } + if (myWasConcealed != aResult) { + myWasConcealed = aResult; + if (aResult) { // hidden unit must be redisplayed (hidden) + ModelAPI_EventCreator::get()->sendDeleted(document(), this->groupName()); + // redisplay for the viewer (it must be disappeared also) + static Events_ID EVENT_DISP = + Events_Loop::loop()->eventByName(EVENT_OBJECT_TO_REDISPLAY); + ModelAPI_EventCreator::get()->sendUpdated(data()->owner(), EVENT_DISP); + } else { // was not concealed become concealed => delete event + static Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_CREATED); + ModelAPI_EventCreator::get()->sendUpdated(data()->owner(), anEvent); + } + } + + return aResult; +}