When a teardrop is the first zone (or the only one) in list (i.e. last tested)
it was ignored, and therefore not removed.
(cherry picked from commit ccc396a6c24e3339adff804db64ffedf327aeb70)
Also avoid throwing if a data stream is empty so that you can still read
the schematic/pcb/library
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20301
(cherry picked from commit a6fbf4bbdbc7e08c815a4b28f14a99be48aee621)
This heuristic seems to make the algorithm reject non-isomorphic mappings much earlier on and converges faster on a solution for typical circuits.
(cherry picked from commit 8192ba73d97d1909649d2b21da3cfb1a230ab90d)
This improves cloning of circuits with numerous of matching component mappings (e.g. LED matrices) by
taking preference for mappings with same order of net connections.
(cherry picked from commit 91ee987cfebce4478442adeac6906f57d3a9f424)
Note to self: we keep track of the formerly pushed vias in the line stack, but pruning one from the optimizer queue should not prune the lines attached to it.
(cherry picked from commit 78fc95fd6df04e61a2eb2982d2eabc7451458cf8)
Note to self: move-endpoints fallback mode must check for vias connected at the obstacle LINE's ends - fallback is only applicable for unconnected ends.
(cherry picked from commit 29a4ec0fde1fc3b978a43b3bbd32f1da9e787f81)
Note to self: managing the shove stack is quite challenging and there were a few corner cases
where reverse via/segment collisions would cause a head segment (or a via) to have multiple clones in the stack.
As SHOVE::removeHeads() took only complete head lines, sometimes it resulted with stray vias/segments.
Fixes https://gitlab.com/kicad/code/kicad/issues/19045
(cherry picked from commit bfbdfcf872bfcbca5431f5429807425268492ac8)
With this change, "A.Component_Class == 'SOME_CLASS'" will return
true if either SOME_CLASS exists in the list of component classes
attached o the footprint, or if SOME_CLASS is the full component
class name.
(cherry picked from commit 85e6978aa271528952427812bbc404d2341c4ff6)
Also adds migration from older layer numbers to strings.
This may require users to dump their 9.0 settings files
(which will have the wrong layer numbers in them), but
those files are often useless anyway as they'll already
have messed up colours if they were migrated from 8.0.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18709
The export SVG dialog was removed some time ago (merged with plot svg).
But some settings of this removed dialogs were not removed.
(cherry picked from commit 9a1cf81ca655374cbeee031a7e41d8200826b91d)
When A references B and B references A, the shared pointer reference
count will never go to zero by just removing the parent container. We
need to explicitly clear the shared pointer references when we are done
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20272
(cherry picked from commit 641e06e67c4358283eb35de7ffa269246e01d1a2)
This reverts previous behaviour whereby 'A.Netclass == x' compared
the full name of an effective netclass (e.g. 'Class1,Default'). This
was found to be unexpected behaviour to users, who were expecting
the equality to compare single netclasses. The equality check now
first checks for a constituent class with the given name, and then
falls back to a check of the full class name.
Inequality requires the netclass name being tested to not be a
constituent netclass and to not be the full class name.
(cherry picked from commit f0e287a87b070c29d7467b911d1280ebdabaefe6)
(Some of these items don't currently get printed, but
there's no sense in leaving a latent bug around in case
we ever change our minds.)
(cherry picked from commit 877c6bce8938e9ca6e3d3c6381a5dd5d9acfb9a4)