Apparently B-Spline knot insertion is challenging the sketcher update process
and spurious GUI updates sometimes occur in the intermediate step after the
knot is inserted but before the internal geometries are re-defined. This set of
comments points to a previous fix and related discussion as a suggestion.
Knot insertions dialog uses decimal precision from preferences.
Sets the spinbox step for knot insertion dialog such that it goes from min to
max knot in 1000 steps.
Removes the mention of multiplicity option from the tooltip.
* Harmonize FreeCAD with Python exception types
* Implement AbortException::getPyExceptionType() to avoid handling it in client code
* Remove catch block for plain C strings
Found via `codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,apoints,ba,beginn,behaviour,bloaded,bottome,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childrens,childs,colour,colours,commen,connexion,currenty,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,inout,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oce,oder,ontop,orgin,orginx,orginy,ot,pard,parm,parms,pres,programm,que,rady,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml,./build/doc/SourceDocu`
===============================================================================
Problem:
- While SketchObject inhibits intermediate updates during internal command execution, sometimes
a change in the selection (clear selection) in an intermediary step triggers an spurious update colour.
- There will be a final draw and this update colours at the end of the internal command.
- If the types of the constraints changed during the intermediary steps, it may happen that the constraint
coin nodes at a given position no longer correspond to the constraint type in the SketchObject property. This
may cause a attempt to access to a non-existing node or static casting a existing node to the wrong type.
Solution:
- Check the type of the constraint against the cached type. If not matching, cancel the color update.
* if determining the normal raises an exception then fall back to a default value
* when handling a Base::Exception then call its ReportException() function to get as much information as possible
===================================================
Bug:
Subscription/Unsubscription of outside of edit mode parameters was missing.
So changing the edge color from settings required to restart FreeCAD.
Fix:
Subscribe/Unsubscribe from the relevant parameter group
Found via `codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,apoints,ba,beginn,behaviour,bloaded,bottome,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childrens,childs,colour,colours,commen,connexion,currenty,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,inout,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,ontop,orgin,orginx,orginy,ot,pard,parm,parms,pres,programm,que,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml,./build/doc/SourceDocu`
==============================
- Constructor from const vector reference is not allowed to take ownership (as it should not delete the const pointer). The ownership parameter is removed.
- Factory method for const objects cannot either. So the ownership parameter is also removed.
=====================================
- GeometryFacade will throw when instantiated with a const Part::Geometry * that does not have a SketchGeometryExtension. It
cannot create it because it is not supposed to modify a pointer to a const object.
- Static functions will check the passed Part::Geometry * parameters and will throw if nullptr.
- GeometryTypedFacade constructor and factory methods to take owner parameter (defaulted to false) for consistency with GeometryFacade.
- The emplace style factory method will make the GeometryFacade take ownership of the emplaced Part::Geometry *. This should avoid memory leaks. The
user shall setOwner(false) if it needs to release() the underlying Part::Geometry * (to transfer ownership).
- Code comments made into doxygen documentation.
============================================================
Following new behaviour of highlighting root point on full constrained:
https://forum.freecadweb.org/viewtopic.php?p=555663#p555663
the rootpoint was lowered in virtual height with respect to the rest of points, so that
the color of any other overlapping point takes precedence.
However, this made it the same height as constraints, causing it to be unpickable in presence of
a colocated constraint:
https://forum.freecadweb.org/viewtopic.php?p=556114#p556114
Solution: Raise all points by one
=================================================================================
Apart from simplifying code, the allocated memory is not managed by the lifetime of the unique pointer owned by the GeometryFacade, preventing memory leaks.