Includes:
- Fix GAL to draw closed polygons in eeschema
- Add functionality to eeschema to draw arbitary polygons
- Update polygon item previews to have customisable edge colour
- Add new SCH_RULE_AREA class, derived from a poly SCH_SHAPE
- Add SCH_RULE_AREA to paint and plot methods
- Add new rule area color preference to themes
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
* 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
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
Use the root schematic UUID to order projects and sort symbol instance
data by KIID_PATH. This will ensure file changes to instance data are
more consistent by using a fixed ordering.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17737
When changing from local to hierarchical or global, the label style is
typically flipped so that global/hierarchical labels hang off the line
while local labels are set on top. To make this more intuitive we flip
the initial orientation when changing
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17739
When adding a sheet using a schematic from another project, set the
project name for the new symbol instance data to the current project
rather than the project name from the copied instance data.
The drivers need to get passed up and down the hierarchical sheets. In
order to do this, both the sheet pin and the hierarchical pin need to
be in the changed items. However, we only get sheets in the screen
items list while the pins are the elements that get set dirty
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17797
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.
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
(Particularly useful for those that have no other settings and
otherwise look blank.)
Also replaces "Generator" terminology as it's a bit confusing
(and will only get more confusing with PCBNew Generators).
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