===============================================
On Undo/Redo there should not be an unconditional recompute.
The need for this recompute is probably related to the fact that PropertyConstraintList
has invalid geometry keys.
=======================================================================
On App:Document::undo, applchn is called on every transactional object (e.g. properties) affected, which
calls Paste on the property.
Each of the properties of SketchObject cause a call to SketchObject::OnChanged, and App::DocumentObject::OnChanged, the latter
calling onChangeProperty, which signals the viewprovider from Gui::Document::slotChangedObject via ViewProviderSketch::updateData.
This causes that the ViewProvider is updated when Constraints and Geometry indexes are not matching.
The solution proposed has three parts:
1. First, at ViewProvider::updateData update is prevented while undo/redo transaction is performed by checking isPerformingTransaction()
2. Second, the onUndoRedoFinished() mechanism of SketchObject causes the call of updateData when it solves the sketch (and sets the solved geometry)
3. Third, Gui::Document::signalUndoDocument and Gui::Document::signalRedoDocument (via the slots in ViewProviderSketch) are
used to perform the recompute of the ViewProvider when the undo/redo transaction is finished if needed.
=======================================================
fixes#4295
PointOnObject autoconstraint for BSplines is currently not supported, this
commit prevents malformed autoconstraint creation.
====================================================
fixes#4105
When a constraint substitution is present, a solve must precede any call to the redundant removal to update the solver information.
=======================================================
When adding a reference constraint of type radius or diameter to an external geometry using the method of select the
continuous mode method (select tool first, click geometry afterwards), with ActiveUpdate checked, there was a missing
solving to bring the solver information in line with the Driven constraint.
fixes#4054
===================================
Encapsulation of grid internals in ViewProviderObject2D, while allowing control via property changes and protected functions.
... all options are freely accessible in the preferences editor ...
... eg. no need to check 'Show Grid' to customize grid size or snap
Also remove the sparse automatical saving to preferences from sketcher Task pane ...
... (some settings were saved, some not)
model()->layoutChanged signal didn't work at all, was never emitted by widget
Replaced with an eventFilter catching ChildRemoved to further emit the signal
======================================================================
fixes#3831
Solver Interface getPointId method is only intended for normal geometry, and returns -1 if geoid is out of range, which was misinterpreted as root point selection.
The SVG icon was changed in df8e0785a3 but the small XPM icon
was not modified.
Unlike other XPM icons which are used in `ViewProviderSketch.cpp`,
this `PointOnPoint` XPM icon doesn't seem to be used at all.
Nevertheless, we still update it so that the XPM matches
its corresponding SVG.
Also update the `README.md` to explain how these XPM icons
are generated.
==================
https://forum.freecadweb.org/viewtopic.php?p=387303#p387303
1. Trim had a bug that the type of the constraint on the second point was equal to the first one regardless of the situation.
2. Trim did not have support for checking whether points were close to the edge and relied on preexisting constraints.