Core: Add undo/redo support to property renaming

This commit is contained in:
Pieter Hijma
2025-06-13 15:32:10 +02:00
parent 2c532ed924
commit 2bf376cffb
7 changed files with 94 additions and 7 deletions

View File

@@ -262,8 +262,9 @@ bool Document::redo(const int id)
return false;
}
void Document::addOrRemovePropertyOfObject(TransactionalObject* obj,
const Property* prop, const bool add)
void Document::changePropertyOfObject(TransactionalObject* obj,
const Property* prop,
const std::function<void()>& changeFunc)
{
if (!prop || !obj || !obj->isAttachedToDocument()) {
return;
@@ -278,10 +279,26 @@ void Document::addOrRemovePropertyOfObject(TransactionalObject* obj,
}
}
if (d->activeUndoTransaction && !d->rollback) {
d->activeUndoTransaction->addOrRemoveProperty(obj, prop, add);
changeFunc();
}
}
void Document::renamePropertyOfObject(TransactionalObject* obj,
const Property* prop, const char* oldName)
{
changePropertyOfObject(obj, prop, [this, obj, prop, oldName]() {
d->activeUndoTransaction->renameProperty(obj, prop, oldName);
});
}
void Document::addOrRemovePropertyOfObject(TransactionalObject* obj,
const Property* prop, const bool add)
{
changePropertyOfObject(obj, prop, [this, obj, prop, add]() {
d->activeUndoTransaction->addOrRemoveProperty(obj, prop, add);
});
}
bool Document::isPerformingTransaction() const
{
return d->undoing || d->rollback;