forked from qt-creator/qt-creator
QmlDesigner: Remove dangling PropertyChanges and KeyFrameGroups
This removes dangling PropertyChanges and KeyFrameGroups when removing a dynamic property. Change-Id: I333b6a61bec34a0bcde1d19372166b3cfaea195b Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
@@ -458,16 +458,35 @@ QStringList DynamicPropertiesModel::possibleSourceProperties(const BindingProper
|
|||||||
|
|
||||||
void DynamicPropertiesModel::deleteDynamicPropertyByRow(int rowNumber)
|
void DynamicPropertiesModel::deleteDynamicPropertyByRow(int rowNumber)
|
||||||
{
|
{
|
||||||
m_view->executeInTransaction("DynamicPropertiesModel::deleteDynamicPropertyByRow", [this, rowNumber]() {
|
m_view->executeInTransaction(
|
||||||
BindingProperty bindingProperty = bindingPropertyForRow(rowNumber);
|
"DynamicPropertiesModel::deleteDynamicPropertyByRow", [this, rowNumber]() {
|
||||||
if (bindingProperty.isValid()) {
|
const AbstractProperty property = abstractPropertyForRow(rowNumber);
|
||||||
bindingProperty.parentModelNode().removeProperty(bindingProperty.name());
|
const PropertyName propertyName = property.name();
|
||||||
} else {
|
BindingProperty bindingProperty = bindingPropertyForRow(rowNumber);
|
||||||
VariantProperty variantProperty = variantPropertyForRow(rowNumber);
|
if (bindingProperty.isValid()) {
|
||||||
if (variantProperty.isValid())
|
bindingProperty.parentModelNode().removeProperty(bindingProperty.name());
|
||||||
variantProperty.parentModelNode().removeProperty(variantProperty.name());
|
} else {
|
||||||
}
|
VariantProperty variantProperty = variantPropertyForRow(rowNumber);
|
||||||
});
|
if (variantProperty.isValid())
|
||||||
|
variantProperty.parentModelNode().removeProperty(variantProperty.name());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (property.isValid()) {
|
||||||
|
QmlObjectNode objectNode = QmlObjectNode(property.parentModelNode());
|
||||||
|
const auto stateOperations = objectNode.allAffectingStatesOperations();
|
||||||
|
for (const QmlModelStateOperation &stateOperation : stateOperations) {
|
||||||
|
if (stateOperation.modelNode().hasProperty(propertyName))
|
||||||
|
stateOperation.modelNode().removeProperty(propertyName);
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto timelineNodes = objectNode.allTimelines();
|
||||||
|
for (auto &timelineNode : timelineNodes) {
|
||||||
|
QmlTimeline timeline(timelineNode);
|
||||||
|
timeline.removeKeyframesForTargetAndProperty(objectNode.modelNode(),
|
||||||
|
propertyName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
resetModel();
|
resetModel();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user