diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index 48766c8200..92493af1ba 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -800,8 +800,6 @@ void Document::RestoreDocFile(Base::Reader &reader) Base::XMLReader xmlReader("GuiDocument.xml", reader); xmlReader.FileVersion = reader.getFileVersion(); - int i,Cnt; - xmlReader.readElement("Document"); long scheme = xmlReader.getAttributeAsInteger("SchemaVersion"); xmlReader.DocumentSchema = scheme; @@ -813,8 +811,8 @@ void Document::RestoreDocFile(Base::Reader &reader) if (scheme == 1) { // read the viewproviders itself xmlReader.readElement("ViewProviderData"); - Cnt = xmlReader.getAttributeAsInteger("Count"); - for (i=0 ;igetNameInDocument() << "\" " << "expanded=\"" << (doc->testStatus(App::Expand) ? 1:0) << "\""; - if(obj->hasExtensions()) + if (obj->hasExtensions()) writer.Stream() << " Extensions=\"True\""; writer.Stream() << ">" << std::endl; @@ -988,9 +986,12 @@ void Document::exportObjects(const std::vector& obj, Base: const App::DocumentObject* doc = jt->first; ViewProvider* obj = jt->second; writer.Stream() << writer.ind() << "getNameInDocument() << "\" type=\"" - << obj->getTypeId().getName() - << "\">" << std::endl; + << doc->getNameInDocument() << "\" " + << "expanded=\"" << (doc->testStatus(App::Expand) ? 1:0) << "\""; + if (obj->hasExtensions()) + writer.Stream() << " Extensions=\"True\""; + + writer.Stream() << ">" << std::endl; obj->Save(writer); writer.Stream() << writer.ind() << "" << std::endl; } @@ -1031,9 +1032,20 @@ void Document::importObjects(const std::vector& obj, Base: std::map::const_iterator jt = nameMapping.find(name); if (jt != nameMapping.end()) name = jt->second; + bool expanded = false; + if (xmlReader.hasAttribute("expanded")) { + const char* attr = xmlReader.getAttribute("expanded"); + if (strcmp(attr,"1") == 0) { + expanded = true; + } + } Gui::ViewProvider* pObj = this->getViewProviderByName(name.c_str()); if (pObj) pObj->Restore(xmlReader); + if (pObj && expanded) { + Gui::ViewProviderDocumentObject* vp = static_cast(pObj); + this->signalExpandObject(*vp, Gui::ExpandItem); + } xmlReader.readEndElement("ViewProvider"); if (it == obj.end()) break;