App: make deleting dynamic property safer

Dynamic property can be removed at any time, even during triggering of
onChanged() signal of the removing property. This patch introduced
static function Property::destroy() to make it safer by queueing any
removed property, and only deleting them when no onChanged() call is
active.
This commit is contained in:
Zheng, Lei
2020-01-01 18:03:52 +08:00
committed by wmayer
parent 9860c741c8
commit d70ddf692e
4 changed files with 46 additions and 2 deletions

View File

@@ -1010,7 +1010,7 @@ bool Document::redo(int id)
void Document::addOrRemovePropertyOfObject(TransactionalObject* obj, Property *prop, bool add)
{
if (!prop || !obj)
if (!prop || !obj || !obj->isAttachedToDocument())
return;
if(d->iUndoMode && !isPerformingTransaction() && !d->activeUndoTransaction) {
if(!testStatus(Restoring) || testStatus(Importing)) {