Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NB at least InspectorModelWithVoiceAndPositionOptions has exactly the same implementation, other models tend to check whether the changed property set contains the relevant ID, but it strikes me as premature optimisation...if anything what would seem to make more sense is to refactor all the of the property loading etc. to be handled automatically by AbstractInspectorModel (buildPropertyItem() would need to keep track of the link between property ids and the returned items etc., then loadProperties( ) could be implemented generically for all models)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And it's not perfectly done in that model either. You should check if PropertyIdSet contains the required properties
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok so can I propose as a compromise:
a) we add "loadProperties( const PropertyIdSet&, const StyleIdSet&) to AbstractInspectorModel, and the default implementation of onNotationChanged is to call this
b) all models should only have a single loadProperties( ) function (overriding the above), whereby the assumption is that if the sets are empty, then all properties should be loaded.
Because the current duplication of code seems to be highly likely to lead to unexpected behaviour in the future if one version of loadProperties( ) is updated differently from the other.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's avoid any refactoring within the scope of this PR and only change the implementation of TremoloSettingsModel::onNotationChanged
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But then you're asking me to continue the pattern of code duplication in the other models that we really should be trying to avoid. If you'd prefer to do the refactoring yourself then ok, as that will fix this issue and prevent similar future issues.