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);