From 9c6e9184930a52b165a0b7274e3a45d1006bfe67 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Mon, 31 Aug 2020 08:57:48 +0800 Subject: [PATCH] App: auto create Origin in OriginGroup if copied without dependency --- src/App/OriginGroupExtension.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/App/OriginGroupExtension.cpp b/src/App/OriginGroupExtension.cpp index 0e25dd9ba4..52a97dd456 100644 --- a/src/App/OriginGroupExtension.cpp +++ b/src/App/OriginGroupExtension.cpp @@ -27,12 +27,15 @@ #endif #include - +#include +#include #include #include "Origin.h" #include "GeoFeature.h" +FC_LOG_LEVEL_INIT("App", true, true) + using namespace App; EXTENSION_PROPERTY_SOURCE(App::OriginGroupExtension, App::GeoFeatureGroupExtension) @@ -160,8 +163,12 @@ void OriginGroupExtension::extensionOnChanged(const Property* p) { && owner->getDocument()->testStatus(Document::Importing)) { for (auto o : origin->getInList()) { if(o != owner && o->hasExtension(App::OriginGroupExtension::getExtensionClassTypeId())) { - Origin.setValue(nullptr); - throw Base::RuntimeError("Origin can only be in a single OriginGroup"); + // Temporarily reset 'Restoring' status to allow document to auto label new objects + Base::ObjectStatusLocker guard( + Document::Restoring, owner->getDocument(), false); + Origin.setValue(owner->getDocument()->addObject("App::Origin", "Origin")); + FC_WARN("Reset origin in " << owner->getFullName()); + return; } } }