From: mpv Date: Tue, 21 Jun 2022 13:26:33 +0000 (+0300) Subject: Fix for the problem: the second sketch is shown as invalid after the first edit is... X-Git-Tag: V9_9_1b1~6 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=05e2e4a31fa248d71445c40e35eeafa44f5d3b1b;p=modules%2Fshaper.git Fix for the problem: the second sketch is shown as invalid after the first edit is canceled after as script with these two sketches is loaded. --- diff --git a/src/XGUI/XGUI_WorkshopListener.cpp b/src/XGUI/XGUI_WorkshopListener.cpp index dfce8b8a4..317581e7a 100644 --- a/src/XGUI/XGUI_WorkshopListener.cpp +++ b/src/XGUI/XGUI_WorkshopListener.cpp @@ -431,33 +431,31 @@ void XGUI_WorkshopListener:: //bool aHasPart = false; bool aDisplayed = false; - if (!isLoadedScript) { - for (aIt = anObjects.begin(); aIt != anObjects.end(); ++aIt) { - ObjectPtr anObject = *aIt; + for (aIt = anObjects.begin(); aIt != anObjects.end(); ++aIt) { + ObjectPtr anObject = *aIt; #ifdef DEBUG_RESULT_COMPSOLID - ResultPtr aRes = std::dynamic_pointer_cast(anObject); - if (aRes.get()) { - ResultCompSolidPtr aCompSolidRes = - std::dynamic_pointer_cast(aRes); - if (aCompSolidRes.get()) { - qDebug(QString("COMPSOLID, numberOfSubs = %1") - .arg(aCompSolidRes->numberOfSubs()).toStdString().c_str()); - } - if (ModelAPI_Tools::compSolidOwner(aRes)) - qDebug("COMPSOLID sub-object"); + ResultPtr aRes = std::dynamic_pointer_cast(anObject); + if (aRes.get()) { + ResultCompSolidPtr aCompSolidRes = + std::dynamic_pointer_cast(aRes); + if (aCompSolidRes.get()) { + qDebug(QString("COMPSOLID, numberOfSubs = %1") + .arg(aCompSolidRes->numberOfSubs()).toStdString().c_str()); } + if (ModelAPI_Tools::compSolidOwner(aRes)) + qDebug("COMPSOLID sub-object"); + } #endif - ResultBodyPtr aRes = std::dynamic_pointer_cast(anObject); - - if (aRes.get() && aRes->numberOfSubs() > 0) - for (int anIndex = 0; anIndex < aRes->numberOfSubs(); ++anIndex) - setDisplayed(aRes->subResult(anIndex), aDisplayed); - else - setDisplayed(anObject, aDisplayed); - } + ResultBodyPtr aRes = std::dynamic_pointer_cast(anObject); + if (aRes.get() && aRes->numberOfSubs() > 0) + for (int anIndex = 0; anIndex < aRes->numberOfSubs(); ++anIndex) + setDisplayed(aRes->subResult(anIndex), isLoadedScript, aDisplayed); + else + setDisplayed(anObject, isLoadedScript, aDisplayed); } + MAYBE_UNUSED bool isCustomized = customizeFeature(anObjects, aDisplayed); //if (myObjectBrowser) @@ -572,8 +570,13 @@ XGUI_Workshop* XGUI_WorkshopListener::workshop() const } -void XGUI_WorkshopListener::setDisplayed(ObjectPtr theObject, bool& theDisplayed) +void XGUI_WorkshopListener::setDisplayed( + ObjectPtr theObject, const bool theIsLoadedScript, bool& theDisplayed) { + if (theIsLoadedScript) { + theObject->setDisplayed(theDisplayed); + return; + } // the validity of the data should be checked here in order to avoid display of the objects, // which were created, then deleted, but flush for the creation event happens after that // we should not display disabled objects diff --git a/src/XGUI/XGUI_WorkshopListener.h b/src/XGUI/XGUI_WorkshopListener.h index 025e014d7..52e00a8c0 100644 --- a/src/XGUI/XGUI_WorkshopListener.h +++ b/src/XGUI/XGUI_WorkshopListener.h @@ -104,7 +104,7 @@ protected: private: - void setDisplayed(ObjectPtr theObject, bool& theDisplayed); + void setDisplayed(ObjectPtr theObject, const bool theIsLoadedScript, bool& theDisplayed); XGUI_Workshop* myWorkshop; // the current workshop