From b58b28c126883d676671747da9d572412724419d Mon Sep 17 00:00:00 2001 From: Roman Pudashkin Date: Mon, 22 Jan 2024 15:54:19 +0200 Subject: [PATCH 1/2] Revert "Update BeamSettingsModel element list in `onNotationChanged`" This reverts commit 109fdc6f1843bd120b9e92acd0e36065ac5edda0. --- .../models/notation/notes/beams/beamsettingsmodel.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/inspector/models/notation/notes/beams/beamsettingsmodel.cpp b/src/inspector/models/notation/notes/beams/beamsettingsmodel.cpp index 1d274787799c2..0e038d5a4c5be 100644 --- a/src/inspector/models/notation/notes/beams/beamsettingsmodel.cpp +++ b/src/inspector/models/notation/notes/beams/beamsettingsmodel.cpp @@ -96,11 +96,9 @@ void BeamSettingsModel::loadProperties() loadProperties(propertyIdSet); } -void BeamSettingsModel::onNotationChanged(const PropertyIdSet&, const StyleIdSet&) +void BeamSettingsModel::onNotationChanged(const PropertyIdSet& changedPropertyIdSet, const StyleIdSet&) { - // The list of elements may have become invalid; beams might have been deleted and replaced during layout. - // Request the actual list to prevent crashes. TODO: Not ideal for performance though. - updateProperties(); + loadProperties(changedPropertyIdSet); } void BeamSettingsModel::loadProperties(const mu::engraving::PropertyIdSet& propertyIdSet) From 56ca0f585702c12e5454c8d90d88f6d9b9518461 Mon Sep 17 00:00:00 2001 From: Roman Pudashkin Date: Mon, 22 Jan 2024 15:57:30 +0200 Subject: [PATCH 2/2] fix #21099: don't delete auto generated elements immediately Before PR #20367, we only deleted them when the user closed the score and the undo stack got cleared Now, they will be deleted along with the dummy element when closing the score --- src/engraving/dom/score.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/engraving/dom/score.cpp b/src/engraving/dom/score.cpp index c3e9d745caa82..dba5f90a49177 100644 --- a/src/engraving/dom/score.cpp +++ b/src/engraving/dom/score.cpp @@ -1734,7 +1734,8 @@ void Score::doUndoRemoveElement(EngravingItem* element) { if (element->generated()) { removeElement(element); - element->deleteLater(); + //! HACK: don't delete as it may still be used in Inspector + // element->deleteLater(); } else { undo(new RemoveElement(element)); }