We reuse the CANDIDATE flag in various places across the codebase,
which is probably incorrect given the original intention for the
flag. Clearing it before use would be a performance hit for incremental
connectivity - and we can't rely on other users of the flag to clear
it for us. So we now use a new flag just for connectivity to avoid
other users trampling on connectivity updates.
Propagating to neighboring connections when not a net will cause an
infinite recursion crash. Use the wxCHECK2 instead of wxASSERT to
prevent this.
Add a bunch of question comments where the use of wxASSERT is questionable.
Now that we are threading things in different frames, we need to watch
that we are not waiting for a process to complete in one frame while
working in another. To accomplish this, we only wait for our own loop
results
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20572
Support explicit jumper symbols, defined either by a
flag that all pins with the same number are connected,
or by explicit groups of jumpered pins
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2558
Having thread pool as its own singleton in the library meant that each
kiface had its own threadpool, leading to many multiples of the threads
being started. Placing a singleton class in PGM_BASE ensures that all
kifaces use the same thread pool.
The singleton class can be extended to provide single instance
guarantee for any element across kifaces
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo. Avoids needing to
repeatly update.
Also updates AUTHORS.txt from current repo with contributor names
When navigating to a sheet without the highlighted net, there was a
chance for an uninitialized pointer deref. This also gathers the
highlighted nets into the navigator as well as their subsuming buses
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18419
If two nets are joined by a global power pin but both have global labels
that override the net name, we still want them to be merged. This
checks for all net names in the drivers when looking for subgraph
merging candidates
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18092
Also removes the side-effect that SCH_SHEET_LIST's
c'tor would sort the list (and write virtual page
numbers) anytime the starting sheet was the root.
Also, definitely don't build a SHEET_LIST (sorted or
otherwise) if you're not even going to use it.
Also don't build SCH_SHEET_LISTs on idle events. Better
to just always have the Next Sheet button enabled (we
already beep if you click it and there's no next sheet).
Also, use a SCREEN_LIST when you can. It's much cheaper
to create.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17984
When moving / deleting a power symbol, in some instances the
symbol is marked dirty, and sometimes the pin (depending on
whether the symbol is the primary edited item, or whether
the pin is identified through an edited item subgraph). If
the pin and the symbol are marked dirty, the pin dirty flag
was not being cleared.
Additionally, not all extracted items were being deleted
from subgraphs correctly.
Both resulted in dirty state and duplicated items in the
subgraphs during incremental connectivity, which resulted
in essentially corrupted subgraph states.
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
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
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