Also pushes some of the implementation down a level
so that it can be shared between this and the
SYMBOL_FILTER_COMBOBOX.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20943
(cherry picked from commit ee2cf47f23eeca5cfc990ae845e18534fd8c96c4)
Increment is only called once per op, so it's not
overly performance critical. Better to have the
lock when reading the cache values.
(cherry picked from commit a7a83efc466fa0872e28bf6df13a5b7c73a42f8b)
Note: the single-trace placer (LINE_PLACER) has moved to the FIXED_TAIL for tracking the interim placed routes (and reverting them if user pressed backspace). Unfortunately the DIFF_PAIR_PLACER didn't follow. The result was the dummy CommitPlacement() call at the end of aborted routing would commit the last shove state, even if FixRoute() was never called. For longer-term fix: fix ROUTER_TOOL logic to indicated aborted routing to the router/placer (AbortPlacement() is already there). Also implement FIXED_TAIL in diff pair placement mode.
(cherry picked from commit ed6440b782f5293af25c48208ff0f51dbf3299ca)
Note to self: likely a regression after adding aAllowSegmentSizeMismatch parameter (default = true) to AssembleLine(). We need to improve the simplification algorithm to take differing widths into account.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21078
(cherry picked from commit 0256ccb6a6c1521c474a38f98e61ea8198a15b6e)
Also fixes a missing mutex for parallel access to cache
in DRC_TEST_PROVIDER_COPPER_CLEARANCE::testGraphicClearances().
Also simplifies the logic for not show multiple errors.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21138
(cherry picked from commit 5e707acbdbdfc53b688fb2fbac27ce4ce0e4c731)
Since the optional might not have a value (and the wxVariant seems to
equate 0 with an empty string), we should check for the valid optional
first and fallback to 0 if not set
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21081
By definition the PTH will exist on all layers at the moment but some
corner case allowed the NPTH layer set to be saved in the layerset,
after which it was hard to reset
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20980
We use this as part of the standard sexpr now. But previously, if a
designer used the '|' character as part of a string with no spaces, it
would be entered unquoted into the file, which neccesitates special
handling
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21065
We were resolving the footprint variables first for text objects. This
resulted in always seeing the footprint layer resolution instead of the
text object if the text object was in a footprint. But this only
happened in the board, not the fp editor. This harmonizes the display
- Implements wildcard matching for constituent component classes
- Implements wildcard matching for effective net and component class names
(cherry picked from commit 41601e9c2f6a4c63c01b080ef7f52215883d08e1)
Note to self:
LINE_PLACER::FixRoute used to silently reclaim the UID of the transient via (as used by the SHOVE's heads tracking logic).
Depending on the particular sequence of user events (the bug is next to impossible to reproduce on a touchpad), this would
result in freshly placed vias disappearing...
Fixes https://gitlab.com/kicad/code/kicad/issues/20999
(cherry picked from commit c5a4f9e747f2a3801708ad8a90e47d9425d4b32b)
In some situations, loading a project in 8.0 would wipe the
object visibility settings but the local settings also
require a format migration. The migrator was adding visibility
for the shapes layer in this situation, bypassing the recovery
from having no objects visible.
Handle Altium project file format
Parse individual schematic files and layout files
Create top-level schematic file
Link imported UUIDs between schematic symbol and footprints based on
refdes
Create KiCad project
Map Altium layout layers between KiCad
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2117
(cherry picked from commit e81956f292f06719b6984d3a86e7493435f49805)
Overlapping limits break the assumptions of the algorithm. We limit the
weights here to only positive numbers and protect the actual alg should
any sneak past
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20827
(cherry picked from commit 0c23868ac2f3fd0a5d1d7a845d27af28a33e9ba5)
First, fix the error limit check in drc_test_provider_edge_clearance.
Then, we rotate the final point incorrectly in SHAPE_ARC::Collide (need
negative angle). We were not checking this result in the QA, so add the
proper tests
(cherry picked from commit 9bedb6eedb8295ea309ff447c48cb53ac028ada5)
By dereferencing first, we force a get() on the optional and try to pass
that to a routine that takes an optional parameter. Just passing the
optional reference protects against accessing an invalid
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20934
Not all hosts have `wxHAS_HUGE_FILES` enabled, which causes us to drop
millisecond resolution accuracy. In some cases, this can cause
race-conditions with externally generated components such as by KiBot
(which generates THT components with color bands on the fly), which runs
so fast, that we fall within a second resolution.
When setting the destination timestamp, there's only two valid options.
Either the destination file exists, and if it does, we use the
destination file's timestamp (current behavior) or it does not exist, in
which case we should use an 'invalid' (null, NaN, whatever).
Calling the constructor sets this up correctly and then only setting the
timestamp if the file exists. Nothing else.
Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20877
(cherry picked from commit cf3dbfbbe6d2b8b2412ba71c4ea05338c369e568)
Code 307 is used for blind/buried vias. Additionally, the access layer
is represented based on sequential layer numbers and needed to be
adjusted for new layer numbering
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20928
(cherry picked from commit 4a896f84f50cefe383429df156422e6557993283)
Resizing pads affects also their solder mask and solder paste patterns,
admittedly in some unusual footprints.
(cherry picked from commit 5147fd982928b4ea9e6432f5a20f3fccf205ec51)