When checking if the particular rule is what is being checked, we rely
on the value of the minimum width. Since we modified that to allow
width checking, this re-adds it for the comparison
(cherry picked from commit f74d1060d4)
The EDIT_TOOL is actually 'co-operating' with the SELECTION_TOOL
by putting its tools into the SELECTION_TOOL's menu. This means
the EDIT_TOOL::m_menu is sad and empty inside, and if you show it,
it either doesn't show at all, or a tiny stub is shown.
(cherry picked from commit af74d2a746)
the DIALOG_EXPORT_STEP uses a auto saved copy of the current board to
create the step file (using kicad_cli).
But this file is not associated to a corresponding .kicad_pro file, and
this can create some issues (like the KIPRJMOD not defined)
So create a copy of the current board prj to export associated prj file
to the auto saved board file.
From master branch
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16973
Snapping happens to elements on copper layers but edge cuts is only
_virtually_ on copper layers. We need to set its routable flag off to
ensure we don't force-snap to the snap points
If the whole line shifts, we may have no points of the old tail in the
new line. In this case, we may not only not find the split point but we
may also have fewer points in the new line than were in the old head.
Clamping to the maximum potential point count prevents creating invalid
lines
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16591
(cherry picked from commit 586fddeec1)
This prevents crashes when trying to re-evaluate
during destruction, etc. and is a cleaner solution
than trying to keep a flag updated.
It should also be a performance win for very large
documents.
Also implements proper threadlocking for the cache.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17950
(cherry picked from commit 498d2c9db1)
This avoids forcing the field to the footprint name in the
library editor, which gets in the way. This doesn't specifically
inhibit the use of the field, and doesn't interfere with fields
users may have set manually (it can be cleared manually if
wished).
Removing the footprint field entirely either from all footprints
or from footprints in fpedit is quite a bit more invasive to
existing designs.
Relates-To: https://gitlab.com/kicad/code/kicad/-/issues/17998
The DRC annular ring width test failed to take into account that a pad
could be contained inside another pad having the same number (thermal
vias for example) which changes the effective annular width of the pad
contained within another pad. A test was added to calculate the effective
annular ring width in this case.
Added some PNS log viewer helper and test code to the PNS playground QA
utility for testing the effective pad annular width code.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17485
(cherry picked from commit a508f2e716)
When using subsheets with nets that end in the same netname, it can be
confusing in pcbnew to know which net you are dealing with. In these
cases, we show the full netname including path to assist when routing
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16187
(cherry picked from commit b346cde30b)
Placing a limit on the number of values that a field is allowed to hold
makes it blank when we set more than this number. There's not a good
reason to limit the number of digits we allow at the field level (we
round to 4 decimal points in the backend)
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17473
(cherry picked from commit cb71f2f207)
(And we already filter all mandatory fields in
pasteFootprintItemsToFootprintEditor() anyway.)
Also, don't nuke a footprint which contains only fields
during a paste.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17937
(cherry picked from commit eb13dec265)
When editing the board, footprint fields _look_ like text items, so copy
and paste of these items should logically result in a text item, not a
footprint copy.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17937
(cherry picked from commit 71b020eb14)
Circles only use one dimension and we tend to ignore the other in our UI
but it is kept and reflects the previous second dimensional value. When
checking DRC, we should only be concerned with the single value used
unless the pad has two dimensions
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17944
(cherry picked from commit e3d2f338de)
Don't try to do too many things at once. Separate
out fooptrint-children handling, visibility-handling,
and footprintEditor vs boardEditor differences.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17562
(cherry picked from commit 3958d1bf14)
* Do not handle tab key event when committing property changes so the
property grid tab navigation works correctly.
* Do not call commit property changes on tab key when no changes are
pending.
* Skip event handling in the base object value change and changing event
handlers in case they do not get overloaded in derived objects.
* Do not force focus to canvas on property change so arrow and tab key
grid navigation work properly. Forcing the user to click the property
grid control to edit a single property doesn't make sense.
* Pass properties panel show event up the event stack.
* Do not set focus to canvas in tool dispatcher if it already has the
focus.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16957
manully cherry picked from commit 8a1347d2c8
The courtyards are referenced by multiple calls and will be rebuilt on
command. If this happens during zone fill (because the board timestamp
has incremented since the start) multiple threads may generate the cache
at the same time, leaving one with an invalid pointer
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17791
(cherry picked from commit df5dd15c6f)
Ratsnest may have connections from a zone to two different items. This
should be avoided as we never want to draw the ratsnest line with the
same element as start and finish
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17763
(cherry picked from commit 8760519a87)
In the file format, the 'mirror' tag is optional (not written unless on)
so we cannot default the new text to 'mirror' on just because the
footprint is on the back layer as it won't be turned off by the
footprint loader.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17546
(cherry picked from commit d0fe2e06aa)
The clearance epsilon should not be used to limit which force elements
we return in the query. Otherwise, we can drag elements into a
DRC-violating space
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16293
(cherry picked from commit 5e850911c5)