Copying the const pointer on large structures (filled zones) will be
very slow and memory intensive. This can cause OOM on linux and extreme
slowdowns when the save is triggered.
Fixes: lp:1840168
* https://bugs.launchpad.net/kicad/+bug/1840168
On complex boards, the view holds a very large vector of all objects.
The dtor will remove each one, searching for the pointer before
removing. When removing all items, this process is not needed, so we
clear the view when exiting. This also prevents lock-up when closing
the full application as KiCad waits for the dtor to finish
(non-interactively). This will cause Windows to crash and Linux to
offer an option for terminating the non-responsive application.
Fixes: lp:1843092
* https://bugs.launchpad.net/kicad/+bug/1843092
the old way was not compatible with the current management if board item lists.
The crash was probably due to double deletions.
Note also the management of undo command in pcbnew_action_plugins needs serious optimization.
Fixes: lp:1844880
https://bugs.launchpad.net/kicad/+bug/1844880
The parenthesis depth is 2 when the polygon isn't closed. This
shouldn't happen but we have the fall-through to handle odd cases
Fixes: lp:1844872
* https://bugs.launchpad.net/kicad/+bug/1844872
(cherry picked from commit d862cdaa72)
Pads may include offsets that allow the user to shift the connection
point of the pad. This is captured by the pad m_Pos but not by
ShapePos(). When testing connectivity, we need to get the offset
position.
With pads, we should check available anchor points for each connection,
increasing probability of finding connection to match fill algorithm
Fixes: lp:1844661
* https://bugs.launchpad.net/kicad/+bug/1844661
* Move column width manipulation into the lib tree adapter
* Fix issue with GTK where if someone types too fast, the part
column gets 0 width.
Fixes: lp:1841584
* https://bugs.launchpad.net/kicad/+bug/1841584
The angle rotation was always negated. But this is incorrect:
The angle rotation must be negated when flipping around X axis
The angle rotation must be 180 - initial rotation when flipping around Y axis
This bug can break position files and footprint updates,
especially when mixing flipping around Y axis and flipping around X axis.
This is the behavior of previous 5.1 version.
Using the bounding box has advantages, but unfortunately in many cases the footprint position is moved.
If a lot of flip commands are made on the same footprint, it is moved far from its initial position.
This happens with wxWidgets 3.0.4 on Windows and is a side effect of a call to Layout().
The fix just calls Layout() only when needed.
Fixes: lp:1843594
https://bugs.launchpad.net/kicad/+bug/1843594
When checking for 3 or more connections, at least one of them must be
a pin. Otherwise we need to fall down to the next check which also
ensures that at least one of them is not parallel.
Fixes: lp:1841458
* https://bugs.launchpad.net/kicad/+bug/1841458
Eagle includes the width of the polygon line when generating polygon pad
sizes where KiCad does not. This simple fix inflates polygon pads half
of the Eagle polygon line width.
Fixes lp:1833687
https://bugs.launchpad.net/kicad/+bug/1833687
panel_board_stackup.cpp: material selection:
replace wxChoice by a better widget (wxTextCtrl+wxButton) to call the dielectric manager dialog
Move dielectric material class to a specific file