diff --git a/src/Gui/ViewProvider.h b/src/Gui/ViewProvider.h index e403921e75..96ac6dd8c4 100644 --- a/src/Gui/ViewProvider.h +++ b/src/Gui/ViewProvider.h @@ -72,7 +72,8 @@ class ObjectItem; enum ViewStatus { UpdateData = 0, Detach = 1, - isRestoring = 2 + isRestoring = 2, + UpdatingView = 3, }; diff --git a/src/Gui/ViewProviderDocumentObject.cpp b/src/Gui/ViewProviderDocumentObject.cpp index cf355ac7f8..b94f86dac2 100644 --- a/src/Gui/ViewProviderDocumentObject.cpp +++ b/src/Gui/ViewProviderDocumentObject.cpp @@ -33,6 +33,7 @@ #endif /// Here the FreeCAD includes sorted by Base,App,Gui...... +#include #include #include #include @@ -156,6 +157,11 @@ void ViewProviderDocumentObject::show(void) void ViewProviderDocumentObject::updateView() { + if(testStatus(ViewStatus::UpdatingView)) + return; + + Base::ObjectStatusLocker lock(ViewStatus::UpdatingView,this); + std::map Map; pcObject->getPropertyMap(Map);