Core: restoreContent not restoring expressions (#21152)
This commit is contained in:
@@ -1215,6 +1215,20 @@ void DocumentObject::onDocumentRestored()
|
||||
}
|
||||
}
|
||||
|
||||
void DocumentObject::restoreFinished()
|
||||
{
|
||||
// some link type property cannot restore link information until other
|
||||
// objects has been restored. For example, PropertyExpressionEngine and
|
||||
// PropertySheet with expression containing label reference.
|
||||
// So on document load they are handled in Document::afterRestore, but if the user
|
||||
// use dumpContent and restoreContent then they need to be handled here.
|
||||
std::vector<App::Property*> props;
|
||||
getPropertyList(props);
|
||||
for (auto prop : props) {
|
||||
prop->afterRestore();
|
||||
}
|
||||
}
|
||||
|
||||
void DocumentObject::onUndoRedoFinished()
|
||||
{}
|
||||
|
||||
|
||||
@@ -752,6 +752,8 @@ protected:
|
||||
void onEarlyChange(const Property* prop) override;
|
||||
/// get called after a document has been fully restored
|
||||
virtual void onDocumentRestored();
|
||||
/// get called after an object finishes restoreContent.
|
||||
void restoreFinished() override;
|
||||
/// get called after an undo/redo transaction is finished
|
||||
virtual void onUndoRedoFinished();
|
||||
/// get called after setting the document
|
||||
|
||||
@@ -10368,7 +10368,7 @@ bool SketchObject::getBlockedState(const Constraint* cstr, bool& blockedstate) c
|
||||
void SketchObject::onDocumentRestored()
|
||||
{
|
||||
try {
|
||||
restoreFinished();
|
||||
onSketchRestore();
|
||||
Part::Part2DObject::onDocumentRestored();
|
||||
}
|
||||
catch (...) {
|
||||
@@ -10376,6 +10376,12 @@ void SketchObject::onDocumentRestored()
|
||||
}
|
||||
|
||||
void SketchObject::restoreFinished()
|
||||
{
|
||||
App::DocumentObject::restoreFinished();
|
||||
onSketchRestore();
|
||||
}
|
||||
|
||||
void SketchObject::onSketchRestore()
|
||||
{
|
||||
try {
|
||||
migrateSketch();
|
||||
|
||||
@@ -917,6 +917,7 @@ protected:
|
||||
|
||||
void onDocumentRestored() override;
|
||||
void restoreFinished() override;
|
||||
void onSketchRestore();
|
||||
|
||||
std::string validateExpression(const App::ObjectIdentifier& path,
|
||||
std::shared_ptr<const App::Expression> expr);
|
||||
|
||||
Reference in New Issue
Block a user