Fix mismatched parameter passing in TOPOLOGY::followTrivialPath()
and TOPOLOGY::AssembleTrivialPath().
Fix logic error in PNS::JOINT::IsLineCorner().
Handle VVIAs in PNS::JOINT::IsNonFanoutVia().
Fixes https://gitlab.com/kicad/code/kicad/-/issues/10614
(cherry picked from commit be532e96d6)
This can't distinguish a header block comment in front of a file
with multiple spice units, and so will include that into the first
unit only.
Also fixes the pin assignments reference textbox to use a
fixed-width font as many .subckt's contain ASCII graphics for
pin definitions (not that it helps any with the test case from
the given bug).
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15660
(cherry picked from commit ede542f911)
These tests apply only to v7, since FP_SHAPE is removed
in master. But this checks that arcs in footprints get the
same winding treatment as EDA_SHAPE arcs (using the 0-suffix
functions).
While the bug has been fixes, the winding handling in the
SetArcGeometry() function isn't tested. This adds a regression
test on EDA_SHAPE, which is where the logic now lives.
Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/15694
Cherry-Pick: fb12db5f2c
When working in high contrast mode, we want to be able to select a
footprint with only elements in, e.g. silk and fab layers.
The previous design for footprint IsOnLayer had one behavior of every
other element and a different behavior for footprints. This leads to
multiple bugs as new features use the overloaded IsOnLayer expecting it
to report if the element exists on a layer or not.
For footprints, we need a different routine to determine whether or not
to select the footprint when clicking on it. IsOnLayer will report if
the footprint has any elements on a specific layer but we don't want to
use the bbox for a hittest because large footprints with through hole
pads will exist on every layer and have an enormous bbox. Instead, we
filter footprints based on the hittest of each element. This behaves in
a more logical fashion, allowing you to select a footprint by clicking
on a visible element of that footprint.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15284
(cherry picked from commit f3d65b5156)
On case-sensitive systems, the country code needs to be capitalized for
the language to be correctly identified between two dialects. Since
`br` was not capitalized, we fell back on european portuguese for Linux
and MacOS
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15592
(cherry picked from commit 2be87e4527)
Altium allows duplicate layer names but KiCad prefers to have unique
names for each layer. This enforces a unique name for each layer when
importing
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15583
(cherry picked from commit c772d116b2)
If KiCad crashes or exits without deleting the lockfile, don't show the
warning message unless we are not the one who locked it or there are
other KiCad instances running locally.
This should catch 99% of the cases where the message is shown
incorrectly. There may be some corner cases where the lock file is
created on a network drive using two different machines with the same
name and same user but these cases should be (famous last words)
sufficiently rare as to not be observed in practice
(cherry picked from commit 7fe83993cf)
When duplicating and existing symbol, we must set the pins before
setting the lib symbol as the lib symbol will generate a pin map that
will be broken by the shift to new pins
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15728
(cherry picked from commit 12ebb2bbfa)
SCH_PIN pointers are used through KiCad and removing them without a
global refresh risks crashes. A safer approach is to simply reuse the
SCH_PIN structures, updating the data to the revised library
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15715
(cherry picked from commit bdb7b99fc8)