If the metadata changed, such as whether a material was favourite or not, then the materials models were not updating any more because the actual list of available materials was still the same.
I've removed this optimisation and tested performance locally. It seems to be slightly slower (though that might be placebo or measurement error). However most of the performance boost of cura-6016 was resulting from different changes there so the interface still seems to be quite a lot faster than what it used to be.
Contributes to issue CURA-6032.
CURA-6015
ListModels should not modify items directly. All ListModels should use
setItems() and the insertions/removals/modifications will be done in
setItems() itself.
This ensures that if a (duplicated) material does not have a generic variant, that
the material it was copied from will be added to the fallback list.
CURA-5898
Since there was so much debate regarding the unit testing of the visiblity presets, i had another look at it.
The old version was almost untestable because all functionalities were mushed together into a single class.
CURA-5734
CURA-5694
For a machine, if it has extruder-specific qualities, when we look up
extruder qualities, we should NOT fall back to use the global qualities.
CURA-5694
For a machine, if it has extruder-specific qualities, when we look up
extruder qualities, we should NOT fall back to use the global qualities.
CURA-5694
- Add convenience functions into GlobalStack
- Use "has_variants" and "has_materials" instead of
"has_variant_materials"
- Remove "has_variant_materials"
- For extruder qualities, skip global qualities if the machine has
variants or materials
Contributes to CURA-5682
- Active material is now expanded by default when opening the manager
- Expanded and collapsed sections are saved to preferences
- Sections are now highlighted when collapsed and having a selected material inside
- Bug with losing focus between fields is not yet fixed
Note that this is still not correct. When the value gets evaluated, we
need to evaluate it with that container in the stack(s), but this case,
the stack may have other containers, so the evaluation can give
incorrect values because its context is simply not correct. This change
only prevents it from breaking because it's missing a provider.