Gui: fix crash on Document resetEdit

This commit is contained in:
Zheng, Lei
2020-02-12 14:45:13 +08:00
committed by wwmayer
parent 3691f68e3f
commit cd7fb70d1f
2 changed files with 8 additions and 1 deletions

View File

@@ -971,6 +971,8 @@ Gui::MDIView* Application::editViewOfNode(SoNode *node) const
}
void Application::setEditDocument(Gui::Document *doc) {
if(doc == d->editDocument)
return;
if(!doc)
d->editDocument = 0;
for(auto &v : d->documents)

View File

@@ -462,7 +462,12 @@ void Document::_resetEdit(void)
}
d->_editViewProvider->finishEditing();
if (d->_editViewProvider->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId()))
// Have to check d->_editViewProvider below, because there is a chance
// the editing object gets deleted inside the above call to
// 'finishEditing()', which will trigger our slotDeletedObject(), which
// nullifies _editViewProvider.
if (d->_editViewProvider && d->_editViewProvider->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId()))
signalResetEdit(*(static_cast<ViewProviderDocumentObject*>(d->_editViewProvider)));
d->_editViewProvider = 0;