When we replace a symbol with one that has fewer pins, the old pins
are released, which leaves points to them in the connection graph
dangling. This updates the pointer to use the cloned copy in the undo
stack until the connection graph is rebuilt with the new data
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17851
(cherry picked from commit 315ad0e071)
When changing from a larger part to a smaller part, the previously
existing pins may be removed from the screen but still linked to
elements in the connection graph because we don't set them dirty unless
the changed element overlaps
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17851
(cherry picked from commit 0cd3e17db7)
Remove duplicate sheet instance page numbering. It's already done when
the sheet is loaded from an exiting file or an already loaded schematic.
Remove the unnecessary page update code from the drawing tool.
(cherry picked from commit 17bcc27ff6)
Netclass assignments are stored in the project level but
CONNECTION_GRAPH updates would clear the assignments. This keeps
existing netname->netclass assignments but updates any netnames that
were changed by the incremental updates. Absolute updates are not
affected and fully recreate the net name to netclass map
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17720
(cherry picked from commit e538b98286)
The connectivity routine would consider symbols, overwriting unused
subgraphs for pins that were not in the change list. This is resolved
by updating the full connectivity to only use pins in the graph since
symbols are not connected independently.
In the process of adding QA tests for this change, additional issues
with the schematic QA were discovered. Specifically, we were not
properly setting the root sheet UUID. This was partially masked by a
const_cast setting of the RefDes in sch_symbol when called the RefDes
getter. This exposed the fact that our QA ERC numbers did not match the
schematic editor stand alone ERC numbers. So the test value for one
check needed to be updated
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17528
(cherry picked from commit a9f35ba42e)
We don't neccesarily have a valid pointer to the parent lib symbol when
checking if it is a power symbol, so fall back to the local flag if this
is the case
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17182
Prevent the hierarchy navigator from being rebuilt unless there are actual
sheet changes that would cause a change to the tree.
Save the tree expansion state before rebuilding the tree and then restore
the expansion state to the previous state sans edits.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16635
(cherry picked from commit 797ab998cc)
Between schematic and pcb editors, we want the following actions:
- Single click on ERC/DRC item should show the item in the ERC/DRC
window. But if the window is not visible, it should only update the
status bar
- Double click on ERC/DRC item should show and raid the ERC/DRC window
as well as select the line item
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17383
(cherry picked from commit 0f57d76ecd)
Prior to this change, the schematic connectivity was updated any time a
change was made to a connectable object. Now the connectivity is only
updated when an object change actually affects the connectivity. Other
properties like line width, fill type, custom fonts, etc. will not cause
the connectivity graph to be rebuilt.
The SCH_COMMIT flag SKIP_CONNECTIVITY has been removed. All schematic
objects can test if they are connectable and if there have been changes
to any connection properties that require a connectivity rebuild.
Remove duplicate rebuild connectivity calls from editor control tool.
This was causing the tangling end test to get called four times on every
undo and redo action because the dangling end test is already called in
the connectivity graph calculation code.
Update connectivity when changing label names which fixes an unreported
connectivity bug.
(cherry picked from commit c5a02fc266)
Also fixes a wrap-around bug in SPICE_VALUE::Normalize() where
it would lose the run of itself if the value was already
normalized to either the largest or smallest UNIT_PREFIX.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17228
(cherry picked from commit ff8ddae9bd)
If a ERC violation is set to ignore, all corresponding markers are deleted.
But if one of these markers is selected, a crash happens.
Now all selected objects are deselected before deleting markers.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17375
Without this, we would parse a legacy schematic symbol field at the same
index as the new description field's index into description, instead of into
a user field.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/17202
If the library already contains a symbol with the same name,
SaveSymbol will replace the existing symbol,
which will invalidate a cached pointer.
(cherry picked from commit d939004bbd)
Avoid O(N^2) by spatial sorting, don't run checks if the bounding boxes
don't overlap.
A second copy is ordered by type to help classes that only want to check
a few types having to walk the whole list.
(cherry picked from commit b7b64d959f)
Avoid O(N^2) comparisonis by spatial presorting. If bounding boxes don't
overlap there's no need to run expensive checks.
(cherry picked from commit f3c2083018)
In Altium many objects can have parameters (including pins). For now
we will drop library parameters belonging to any sub-components of a
symbol.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17048
(cherry picked from commit 1a6e6a06eb)
(Don't require the same text to be put into the tooltip.
It's error-prone and also disallows us from having a separate
tooltip for toolbar buttons.)
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17009
Performing a full connectivity rebuild after changing a sheet file name
ensures that there are no stale connectivity object pointers laying around.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17011