+ make sure to set unique labels for newly created documents
This commit is contained in:
parent
a239e7b194
commit
429e55d744
|
@ -286,6 +286,23 @@ Document* Application::newDocument(const char * Name, const char * UserName)
|
||||||
Name = "Unnamed";
|
Name = "Unnamed";
|
||||||
string name = getUniqueDocumentName(Name);
|
string name = getUniqueDocumentName(Name);
|
||||||
|
|
||||||
|
std::string userName;
|
||||||
|
if (UserName && UserName[0] != '\0') {
|
||||||
|
userName = UserName;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
userName = Name;
|
||||||
|
std::vector<std::string> names;
|
||||||
|
names.reserve(DocMap.size());
|
||||||
|
std::map<string,Document*>::const_iterator pos;
|
||||||
|
for (pos = DocMap.begin();pos != DocMap.end();++pos) {
|
||||||
|
names.push_back(pos->second->Label.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!names.empty())
|
||||||
|
userName = Base::Tools::getUniqueName(userName, names);
|
||||||
|
}
|
||||||
|
|
||||||
// create the FreeCAD document
|
// create the FreeCAD document
|
||||||
auto_ptr<Document> newDoc(new Document() );
|
auto_ptr<Document> newDoc(new Document() );
|
||||||
|
|
||||||
|
@ -313,10 +330,7 @@ Document* Application::newDocument(const char * Name, const char * UserName)
|
||||||
signalNewDocument(*_pActiveDoc);
|
signalNewDocument(*_pActiveDoc);
|
||||||
|
|
||||||
// set the UserName after notifying all observers
|
// set the UserName after notifying all observers
|
||||||
if (UserName)
|
_pActiveDoc->Label.setValue(userName);
|
||||||
_pActiveDoc->Label.setValue(UserName);
|
|
||||||
else
|
|
||||||
_pActiveDoc->Label.setValue(Name);
|
|
||||||
|
|
||||||
return _pActiveDoc;
|
return _pActiveDoc;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user