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)
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
The undo/redo lists can have non-SCH_ITEM elements such as worksheet
items. When re-doing connectivity, we only need the schematic items, so
we pass on these
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16752
This change no longer sorts pasted sheets by page number. This was done
because pasted sheets may not be numbered. When sheets are not numbered
they are sorted by UUID path which results in some unexpected results.
Since the pasted sheet code uses recursion, pages will be numbered in the
order they are added.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16580
(cherry picked from commit 4cf22e428c)
Running the schematic editor in the stand alone mode can result in an
empty project name. Rather than assert when the project name is empty,
just don't run the pruning algorithm. The pruning will just have to
happen on the next load of the schematic when it has a proper project
name.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16577
(cherry picked from commit 0df8d5c2d6)
This was causing unwanted tree expansions when descending a sheet hierarchy
in editor.
Also fixed an issue with the tree highlighting when changing sheets in the
schematic editor.
(cherry picked from commit 50cad558cf)
The new behavior is to only expand to the first child of the root sheet
level. On very complex hierarchies, this makes the navigator far more
useful.
Do not update schematic hierarchy navigator on every edit. Now only
sheet changes will trigger a rebuild of the tree.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16371
Pasting from the clipboard when copying from another project can leave
sheet instance information that is not valid for the current project.
This change prunes all sheet instance information that is not relevant
to the current project. It also prunes invalid paths created by pasting
sheets from different paths in the same project.
(cherry picked from commit 482aff3f0b)
produces a crash when the library links are updated, and a power symbol is not found
in any loaded library.
Add also an option to export all symbols or all not pwer symbols
From master branch
Fixes#16229https://gitlab.com/kicad/code/kicad/-/issues/
The paste code creates invalid KIID_PATH objects with a zero length. All
paths must include the root KIID at a minimum. Code was added to prune
the invalid paths and some defensive code was adding to the formatter to
prevent the crash in case there are other paths where someone generates
a zero length path.
Pruning orphaned instance data does not work when loading schematics prior
to version 7 because the paths did not include the root sheet UUID. Once
the file is saved to V7 or later, the next load will prune any orphaned or
invalid instance data for the current project.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16245
(cherry picked from commit 764df1d107)