Ignore bus member connection subgraphs. They do not have a valid net
name nor do they contain schematic items. This prevents empty nodes
from being added to the tree. They can be reintroduced in the future
if someone wants to pursue it.
Freeze the wxTreeCtrl while populating it and thaw when done to prevent
any unnecessary repainting.
Add profiling to test how long it takes to rebuild the net navigator.
The recently added populate the navigator with all nets when no net
is highlighted has exposed some potential performances issues with some
versions of wxWidgets on certain platforms. Namely wxWidgets 3.2.4 on
Linux GTK.
Fix an issue where a sheet name change would not update the highlighted
net navigator resulting in a stale human readable sheet path.
Prevent the highlighted net navigator from being rebuilt twice when
loading a schematic. SCH_EDIT_FRAME::RefreshNetNavigator() was being
called from both SCH_EDIT_FRAME::UpdateHierarchyNavigator() and
SCH_EDIT_FRAME::RecalculateConnectivity().
Add a new trace helper "KICAD_UI_PROFILE" to show trace output when
profiling user interface performance. It's used in the net navigator
profiling mentioned above.
Reuse PROF_TIMER::Show() to generate string for PROF_TIMER::to_string().
Previously, we only allowed pins of the same time as well as passive
pins to be stacked. This change allows NIC pins as well since they are
not internally connected, there is no reason that they cannot be tied to
another pin electrically
C++20 added new reverse and rewritten candidates. This can confuse the compiler because it'll test both A==B and B==A for overloads.
Because we were defining parent class equality overloads, A==B and B==A was considered ambigious due to both being compatible in casting.
So we needed to add explicit child class equality operator overloads
Instances, pins and graphics have started to wander around the files.
Sorts instances before writing. Uses compare with std::set (not
std::multiset) to enfore lib item ordering
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17737
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
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
(cherry picked from commit 4481fcc75e)
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
This will display a better error message to the user, instead of saying
that no plugins to load the file are found (because the plugin tests
will also fail due to being unable to read the file).
Currently, new global or local net labels are auto-filled with the
net name if the wire is driven by a global or local label. This
currently happens recursively within SCH_LINE. This fix moves this
to determining the driver from the connectivity graph, and removes
the determination from the SCH_LINE code where it does not belong.
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