onChanged() triggers for the first time before all of the properties are
loaded, so it can fail to compute properly at that stage, depending on
the load order.
However, it's not necessary to compute geometry in onChanged() at all,
because that's usually supposed to happen in execute() anyway. The
solution here is to just not do onChanged() at all.
Fixes#13558
There were several issues here, not just one. The following are fixed:
Incorrect display of Quantity items (NaN)
Editing and updating quantity items
Editing and updating items on the first row.
There are still issues with editing lists, but these were known issues at the time of initial merge. This has been split out into issue #13435fixes#13020
When restarting the application (e.g. after installing an addon) the application will be closed and a new instance will be launched. Now it can happen that the old instance is still busy writing the config files to disk while the new instance wants to read them in. At this time it's possible that a config file is in an invalid state so that the new instance will ignore it but then starts with a default configuration.
Later when closing the new instance the config files will be overwritten and destroy the user's original settings.
By using a lock file this race condition will be avoided. It uses a timeout of 1 second that should be enough for the old instance to write the files to disk.
The ShapeAppearance is a list of materials and thus assigning a color with 'obj.ViewObject.ShapeAppearance.DiffuseColor = color'
is incorrect.
But doing it with 'obj.ViewObject.ShapeAppearance[0].DiffuseColor = color' doesn't work as expected because the
internal notification doesn't work with a list.
So, the only viable way is to revert the changes and do it by assigning the color to the 'ShapeColor' attribute.
A beam created with Arch_Structure would have the wrong length if the 1st point was clicked and the 2nd point was entered in the task panel.
Forum topic: https://forum.freecad.org/viewtopic.php?t=86595
Aditionally: simplified rotateLH and rotateLW.
Co-authored-by: Yorik van Havre <yorik@uncreated.net>